类路径问题:使用Maven Antrun插件运行ant java任务

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位置的值设置为'

Adr*_*ian 5

我感到沮丧了一段时间后就找到了解决这个问题的方法:受此线程启发

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)