ant中使用maven-ant-tasks下载maven的依赖

ant中使用maven-ant-tasks下载maven的依赖
1人收藏此文章,我要收藏发表于5个月前(2012-07-26 21:12) ,     已有 235次阅读 ,共 0个评论       

1、问题

一个项目原来由于全部采用ant构建,非常庞大。想换为maven来管理依赖与构建。但初期不可能一步到位,所以需要主体还是用ant,只是局部先采用maven。这时问题就来了,ant打包时需要私有maven仓库中一些jar。所以需要自动把maven中的jar资源下载下来,参与ant打包。

maven在没有pom.xml文件存在时并没有直接下载依赖的指令。

2、解决

查看资料后发现maven-ant-tasks可以做到,下面是ant的脚本。

view source
print ?
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代码块就可以了。

参考:http://maven.apache.org/ant-tasks/

你可能感兴趣的:(ant中使用maven-ant-tasks下载maven的依赖)