项目有POM.xml文件,有好多jar包,需要把用到的jar包,解析pom.xml,找到需要复制的jar包,复制到另一个maven仓库里去
[color=red][b]这个脚本有问题,会丢失依赖关系[/b][/color]
脚本:
[color=red][b]这个脚本有问题,会丢失依赖关系[/b][/color]
脚本:
#! 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()