use*_*449 3 java ant classpath maven
从maven ant run插件运行ant任务时,我可以将maven classpath设置为ant属性。但是,当我尝试运行<ant:java任务设置此确切的类路径时,出现错误,指出找不到引用。好像整个类路径被解释为一个jar。有没有办法以某种方式将此类路径设置为ant java任务?
(来自Maven)
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
....
<property name="compile_classpath" refid="maven.compile.classpath"/>
....
Run Code Online (Sandbox Code Playgroud)
(来自蚂蚁)...
<path id="classpath">
<path refid="${compile_classpath}"/>
</path>
...
<java classname="..." classpathref="classpath">
...
</java>
Run Code Online (Sandbox Code Playgroud)
Maven ant run插件的版本是1.7
如果无法做到这一点,那么是否可以通过ant迭代该类路径字符串(使用';'分隔符的jar文件位置)并将jar位置的值设置为'
我感到沮丧了一段时间后就找到了解决这个问题的方法:受此线程启发
antrun插件可以正确地构造类路径引用,但是在您调用ant任务时不会将它们传递给外部构建文件。
因此,解决方案是使用该<reference>元素显式传递要访问的任何类路径引用。
<!-- antrun plugin execution -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>build</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<ant antfile="${basedir}/build.xml">
<!-- This is the important bit -->
<reference torefid="maven.compile.classpath" refid="maven.compile.classpath"/>
</ant>
</target>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
并在您的蚂蚁构建任务中像平常一样食用它们
<!-- External ant build referencing classpath -->
<java classname="net.nhs.cfh.ebook.Main" fork="true" failonerror="true">
<arg value="-b"/>
<arg value="${dist.dir}"/>
<arg value="-o"/>
<arg value="${xml.dir}/treeindex"/>
<arg value="tree.xml"/>
<jvmarg value="-Dstrategy=treeParser"/>
<!-- reference to the passed-in classpath reference -->
<classpath refid="maven.compile.classpath"/>
</java>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10757 次 |
| 最近记录: |