`

python 复制lib下的jar到maven的仓库中

阅读更多
项目有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"这一主题主要涉及到如何配置Idea以便顺利执行Flink程序,以及理解所需的库文件(lib)和关联的jar包。 首先,Apache Flink是一个开源的流处理和批处理框架,它用于构建数据流应用...

    ojdbc6-11.2.0.3.jar下载包.rar

    2. 将ojdbc6-11.2.0.3.jar文件复制到Java项目的lib目录,或者将其添加到构建工具(如Maven或Gradle)的依赖管理中。 3. 在Java代码中加载驱动,通常通过`Class.forName("oracle.jdbc.driver.OracleDriver")`完成。 4...

    针对Python的代码静态分析工具PySonar.zip

    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

    hadoop eclipse mapreduce 下开发所有需要用到的 JAR 包

    2. 在项目的`lib`目录下添加上述提到的所有JAR包。 3. 右键点击项目,选择"Build Path" -> "Configure Build Path",在"Libraries"选项卡中添加这些JAR包。 4. 在"Order and Export"选项卡中,确保所有的Hadoop相关...

    apache-maven-3.44.3-bin.zip

    "Nexus 3.24.0-02-unix.tar.gz" 是 Sonatype Nexus 的一个版本,这是一个企业级的Maven仓库管理器。Nexus 作为中央仓库的代理,可以帮助开发团队管理和分发软件组件,包括JARs、NPM包、Python库等。Nexus 提供了高级...

    json的jar包

    在传统的Java项目中,这可能意味着将jar包复制到项目的`lib`目录下,然后在构建路径中包含它。在现代的Maven或Gradle项目中,你可以通过在构建配置文件中添加依赖来引入这个库。 总的来说,"json的jar包"是一个关键...

    antlr-runtime-3.3.jar.zip

    这通常通过构建工具(如Maven或Gradle)的依赖管理来实现,也可以手动将其复制到项目的lib目录下。 在使用ANTLR runtime时,开发者通常需要编写自己的语法规则文件(.g或.g4),定义要解析的语言结构。ANTLR工具会...

    antlr-2.7.7.jar.zip

    3. **如果没有使用构建工具**,你可以将jar文件放入项目的`lib`目录下,并在运行时通过`java -cp`命令指定classpath包含这个jar。 ANTLR 2.7.7虽然已经是一个较老的版本,但在某些项目中可能仍然被使用,因为它支持...

    json需要的jar包

    具体步骤通常是将jar包复制到项目的`lib`目录下,然后在构建工具(如Maven或Gradle)的配置文件中添加依赖,或者在IDE中手动设置类路径。 总的来说,理解和熟练使用JSON处理库是Java开发中的基本技能,这些jar包...

    JSON常用jar下载

    为了使用它们,你需要将jar文件添加到你的Java项目中,通常是通过构建工具(如Maven或Gradle)添加依赖,或者手动将jar文件复制到项目的lib目录,并在运行时确保它们在Classpath中。 总结来说,JSON库是Java开发中...

    JSON完整使用jar包

    对于传统的Java项目,可以将jar文件复制到项目的`lib`目录下,并手动添加到类路径。 在开发过程中,你可能需要以下操作: - **序列化**:将Java对象转换为JSON字符串,例如使用`ObjectMapper`的`writeValueAsString...

    json jar包

    在实际项目中,你通常会将`json-lib.jar`添加到项目的类路径中,然后通过import相关类来使用它的功能。对于大型项目,你可能还会考虑使用构建工具如Maven或Gradle来管理依赖,这样可以避免手动下载和添加jar包。 总...

    json-lib.rar

    2. 在Java项目中引入这个jar包,可以通过Maven或Gradle等构建工具添加依赖,或者直接将jar包放入项目的lib目录。 3. 使用import导入相关类,如`net.sf.json.JSONObject`和`net.sf.json.JSONArray`。 4. 创建或解析...

    zip jar包

    - 将JAR文件复制到项目的`lib`目录,或者配置构建工具(如Maven或Gradle)的依赖管理。 - 在Java代码中,通过`Class.forName()`方法加载驱动,例如:`Class.forName("com.mysql.jdbc.Driver");` - 使用`java.sql....

    json-lib-2.4-jdk15包含依赖JAR包

    1. **添加依赖**:在项目中,需要将`json-lib-2.4-jdk15.jar`及其依赖的JAR包添加到类路径中,如果使用Maven或Gradle,可以配置相应的依赖项。 2. **创建JSON对象**:可以使用`net.sf.json.JSONObject`或`...

    JSONObject依赖的jar包

    在Java的Maven或Gradle构建系统中,可以通过指定相应的依赖项来自动下载并管理这些库。 总结来说,`JSONObject`是Java处理JSON的核心工具,而`json-lib`、`commons-beanutils`、`commons-collections`和`commons-...

    json所需要导入jar包

    如果手动导入,需要将jar文件复制到项目的lib目录下,并确保在编译和运行时被类路径正确引用。 导入jar包后,可以使用库提供的方法来处理JSON数据。例如,你可以创建JSON对象,将Java对象转换为JSON,解析JSON字符...

    jna.rar_jna_jna.jar_jna文件

    或者,你可以将`jna.jar`文件复制到项目的lib目录下,并在运行时将其包含在类路径中。 JNA还提供了Platform类,用于识别操作系统和架构,这有助于在不同平台上正确加载本地库。例如,`Platform.CPU`和`Platform....

Global site tag (gtag.js) - Google Analytics