项目有POM.xml文件,有好多jar包,需要把用到的jar包,解析pom.xml,找到需要复制的jar包,复制到另一个maven仓库里去
这个脚本有问题,会丢失依赖关系
脚本:
#! python
#coding:utf-8
#http://powertech.iteye.com/
import sys
import os
import shutil
import xml.dom.minidom as xml
repository = 'E:/python/repository'
lib = 'E:/target/dependency'
pom = 'E:/python/pom.xml'
'''
中文打印函数
'''
def out(str):
print str.decode('UTF-8').encode('GBK')
'''
根据group id 创建文件夹路径
'''
def groupPath(group,artifactId,version):
group = group.replace('.','/')
if repository[-1]!='/' :
group = repository+'/'+group
else:
group = repository+group
group = group+'/'+artifactId+'/'+version
exists = os.path.exists(group)
if not exists :
os.makedirs(group)
return group
'''
获取某XML节点下,子节点的值
'''
def nodeVal(element,name):
node = element.getElementsByTagName(name)
if len(node)>0:
return element.getElementsByTagName(name)[0].firstChild.nodeValue
else:
return ''
'''
将${jdbc.driver.groupId}类型的引用,替换为实际值
'''
def prop(element,name):
if len(name)==0:
return ''
if name[0]=='$':
name = name[2:len(name)-1]
name = nodeVal(element,name)
return name
def cpjar():
dom = xml.parse(pom)
project = dom.documentElement
dependencies = project.getElementsByTagName('dependency')
i=0
for dependency in dependencies:
groupId = nodeVal(dependency,'groupId')
groupId = prop(project,groupId)
artifactId = nodeVal(dependency,'artifactId')
artifactId = prop(project,artifactId)
version = nodeVal(dependency,'version')
version = prop(project,version)
classifier = nodeVal(dependency,'classifier')
classifier = prop(project,classifier)
gp = groupPath(groupId,artifactId,version)
out('create directory:'+gp)
if len(classifier)>0:
jar = artifactId+'-'+version+'-'+classifier+'.jar'
else:
jar = artifactId+'-'+version+'.jar'
src = lib+'/'+jar
dst = gp+'/'+jar
out('copy from:'+src)
out('copy to:'+dst)
print('\n')
shutil.copy(src,dst)
i+=1
print('%d jar files copied!' %(i))
print('copy over!')
cpjar()
分享到:
相关推荐
"在idea中运行flink程序所需要lib"这一主题主要涉及到如何配置Idea以便顺利执行Flink程序,以及理解所需的库文件(lib)和关联的jar包。 首先,Apache Flink是一个开源的流处理和批处理框架,它用于构建数据流应用...
2. 将ojdbc6-11.2.0.3.jar文件复制到Java项目的lib目录,或者将其添加到构建工具(如Maven或Gradle)的依赖管理中。 3. 在Java代码中加载驱动,通常通过`Class.forName("oracle.jdbc.driver.OracleDriver")`完成。 4...
PySonar2 是王垠开发的,针对 ...java -jar target/pysonar-2.0-SNAPSHOT.jar /usr/lib/python2.7 ./html 系统要求 Python 2.7.x Python 3.x if you have Python3 files Java 7 maven 标签:PySonar
2. 在项目的`lib`目录下添加上述提到的所有JAR包。 3. 右键点击项目,选择"Build Path" -> "Configure Build Path",在"Libraries"选项卡中添加这些JAR包。 4. 在"Order and Export"选项卡中,确保所有的Hadoop相关...
"Nexus 3.24.0-02-unix.tar.gz" 是 Sonatype Nexus 的一个版本,这是一个企业级的Maven仓库管理器。Nexus 作为中央仓库的代理,可以帮助开发团队管理和分发软件组件,包括JARs、NPM包、Python库等。Nexus 提供了高级...
在传统的Java项目中,这可能意味着将jar包复制到项目的`lib`目录下,然后在构建路径中包含它。在现代的Maven或Gradle项目中,你可以通过在构建配置文件中添加依赖来引入这个库。 总的来说,"json的jar包"是一个关键...
这通常通过构建工具(如Maven或Gradle)的依赖管理来实现,也可以手动将其复制到项目的lib目录下。 在使用ANTLR runtime时,开发者通常需要编写自己的语法规则文件(.g或.g4),定义要解析的语言结构。ANTLR工具会...
3. **如果没有使用构建工具**,你可以将jar文件放入项目的`lib`目录下,并在运行时通过`java -cp`命令指定classpath包含这个jar。 ANTLR 2.7.7虽然已经是一个较老的版本,但在某些项目中可能仍然被使用,因为它支持...
具体步骤通常是将jar包复制到项目的`lib`目录下,然后在构建工具(如Maven或Gradle)的配置文件中添加依赖,或者在IDE中手动设置类路径。 总的来说,理解和熟练使用JSON处理库是Java开发中的基本技能,这些jar包...
为了使用它们,你需要将jar文件添加到你的Java项目中,通常是通过构建工具(如Maven或Gradle)添加依赖,或者手动将jar文件复制到项目的lib目录,并在运行时确保它们在Classpath中。 总结来说,JSON库是Java开发中...
对于传统的Java项目,可以将jar文件复制到项目的`lib`目录下,并手动添加到类路径。 在开发过程中,你可能需要以下操作: - **序列化**:将Java对象转换为JSON字符串,例如使用`ObjectMapper`的`writeValueAsString...
在实际项目中,你通常会将`json-lib.jar`添加到项目的类路径中,然后通过import相关类来使用它的功能。对于大型项目,你可能还会考虑使用构建工具如Maven或Gradle来管理依赖,这样可以避免手动下载和添加jar包。 总...
2. 在Java项目中引入这个jar包,可以通过Maven或Gradle等构建工具添加依赖,或者直接将jar包放入项目的lib目录。 3. 使用import导入相关类,如`net.sf.json.JSONObject`和`net.sf.json.JSONArray`。 4. 创建或解析...
- 将JAR文件复制到项目的`lib`目录,或者配置构建工具(如Maven或Gradle)的依赖管理。 - 在Java代码中,通过`Class.forName()`方法加载驱动,例如:`Class.forName("com.mysql.jdbc.Driver");` - 使用`java.sql....
1. **添加依赖**:在项目中,需要将`json-lib-2.4-jdk15.jar`及其依赖的JAR包添加到类路径中,如果使用Maven或Gradle,可以配置相应的依赖项。 2. **创建JSON对象**:可以使用`net.sf.json.JSONObject`或`...
在Java的Maven或Gradle构建系统中,可以通过指定相应的依赖项来自动下载并管理这些库。 总结来说,`JSONObject`是Java处理JSON的核心工具,而`json-lib`、`commons-beanutils`、`commons-collections`和`commons-...
或者,你可以将`jna.jar`文件复制到项目的lib目录下,并在运行时将其包含在类路径中。 JNA还提供了Platform类,用于识别操作系统和架构,这有助于在不同平台上正确加载本地库。例如,`Platform.CPU`和`Platform....
如果手动导入,需要将jar文件复制到项目的lib目录下,并确保在编译和运行时被类路径正确引用。 导入jar包后,可以使用库提供的方法来处理JSON数据。例如,你可以创建JSON对象,将Java对象转换为JSON,解析JSON字符...