ant中使用maven-ant-tasks下载maven的依赖
1、问题
一个项目原来由于全部采用ant构建,非常庞大。想换为maven来管理依赖与构建。但初期不可能一步到位,所以需要主体还是用ant,只是局部先采用maven。这时问题就来了,ant打包时需要私有maven仓库中一些jar。所以需要自动把maven中的jar资源下载下来,参与ant打包。
maven在没有pom.xml文件存在时并没有直接下载依赖的指令。
2、解决
查看资料后发现maven-ant-tasks可以做到,下面是ant的脚本。
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < project name = "lib" default = "download-libs" xmlns:artifact = "urn:maven-artifact-ant" > |
03 |
04 | < property name = "maven.ant.tasks.jar" value = "maven-ant-tasks-2.1.3.jar" /> |
05 |
06 | < property name = "maven.settings.file" value = "/Nautilus/java/maven/apache-maven-latest/conf/settings.xml" /> |
07 |
08 | < target name = "download-libs" depends = "-init-maven-task" > |
09 |
10 | < artifact:dependencies pathId = "dependencies.classpath" settingsFile = "${maven.settings.file}" > |
11 |
12 | < dependency groupId = "org.slf4j" artifactId = "slf4j-api" version = "1.6.6" > |
13 | < exclusion groupId = "org.springframework" artifactId = "spring-core" /> <!--屏蔽依赖示例--> |
14 | </ dependency > |
15 |
16 | </ artifact:dependencies > |
17 |
18 | < move todir = ".\lib" > |
19 | < path refid = "dependencies.classpath" /> |
20 | </ move > |
21 |
22 | </ target > |
23 |
24 | < target name = "-init-maven-task" depends = "-obtain-maven-task-jar" > |
25 | < available property = "maven.ant.tasks.jar.exists" file = "${maven.ant.tasks.jar}" /> |
26 | < typedef resource = "org/apache/maven/artifact/ant/antlib.xml" uri = "urn:maven-artifact-ant" classpath = "${maven.ant.tasks.jar}" /> |
27 | </ target > |
28 |
29 | < target name = "-obtain-maven-task-jar" > |
30 | < available property = "maven.ant.tasks.jar.exists" file = "${maven.ant.tasks.jar}" /> |
31 | < antcall target = "download-maven-jar" /> |
32 | </ target > |
33 |
34 | < target name = "download-maven-jar" unless = "maven.ant.tasks.jar.exists" > |
35 | < property name = "maven.ant.tasks.url" value = "http://www.apache.org/dist/maven/binaries/${maven.ant.tasks.jar}" /> |
36 | < get src = "${maven.ant.tasks.url}" dest = "${maven.ant.tasks.jar}" /> |
37 | </ target > |
38 |
39 | </ project > |
这个脚本第一次会自动下载maven-ant-tasks-2.1.3.jar,如果没有找到请登录http://www.apache.org/dist/maven/binaries/参考一下现在的版本来修改脚本。
maven.settings.file为你的maven settings.xml的位置。这样就会自动使用你配置的profile。
从仓库下载下来的jar会放到当前的lib目录中。(move todir=".\lib")
如果有多个lib目录需要copy。重复target中的artifact:dependencies与move代码块就可以了。