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

当从maven ant run插件运行ant任务时,我可以将maven classpath设置为ant属性。 但是当我尝试运行<ant:java task setting这个确切的类路径时,我得到了无法找到引用的错误。 好像整个类路径被解释为一个jar。 有没有办法以某种方式将此类路径设置为ant java任务?

(来自maven)

  maven-antrun-plugin ....  .... 

(来自ant)……

    ...  ...  

maven ant run插件的版本是1.7

如果无法做到这一点,在ant中有一些方法来迭代这个类路径字符串(jar文件的位置带有’;’分隔符)并将jar位置的值设置为’

我觉得在经历了一段时间的挫折后,我已经找到了解决这个问题的解决方案:受到这个线程的启发

antrun插件正在构造类路径引用,但在调用ant任务时不会将它们传递给外部构建文件。

因此,解决方案是使用元素显式传入要访问的任何类路径引用。

    maven-antrun-plugin 1.7   build compile  run             

并在ant构建任务中正常使用它们

            

在maven:

  maven-antrun-plugin ....  .... 

在Ant中使用pathelement而不是path refid

    

然后它工作

你在这里遇到的问题是compile_classpath是一个Ant属性。 表达式$ {compile_classpath}解析为属性的值。

而path元素上的refid属性需要引用路径。 基本上你得到一个运行时类型错误,其中路径引用是预期的,但你提供了一个字符串。

您真正想要做的是将maven.compile.classpath直接传递到您的Ant路径元素中。 因为两者都在处理路径对象。 但这不起作用。

因此,我提出的解决方法是将路径作为属性从Maven传递到各个jar文件到Ant构建文件。

在Maven:

  maven-antrun-plugin ...  ... 

在Ant:

    

这可行,但如果你在Maven类路径中有多个依赖项或想要传递传递依赖项,那么显然很糟糕。 我认为Ant Ivy可能就是我要采用构建文件的方式。

很抱歉重新打开一个旧线程,但是在我今天遇到这个问题之后,我注意到Maven文档中有一个错误。 正如你所发现的那样

  

不起作用。 然而,

  

应该管用。 当然,您也可以直接使用${maven.compile.classpath}

Maven bugtracker声称这个文档错误已在4年前修复 ,但截至今天的日期,它仍然存在于最后推出的文档中(2011年末)。