在蚂蚁脚本中,我设置了path
:
<path id="classpath.id">
<pathelement path="somepath_1" />
...
<pathelement path="somepath_n" />
</path>
所以我java
任务中使用它:
<java ... classpathref="classpath.id">
...
</java>
如何使用classpath.id
在 ant 任务中设置bootclasspath
java
类似于:
<java ...>
<jvmarg value="-Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.id}"/>
</java>
蚂蚁目前还不知道${classpath.id}
。
有一种特殊的语法用于获取 Ant 引用 ID 所引用的内容的值。 使用 ${ant.refid:classpath.id}
而不是 ${classpath.id}
。
有关参考,请参阅使用 ${ant.refid:} 获取引用的值。
为了完整起见,以下是可能的解决方案:
使用 ${ant.refid:} 前缀
这是最干净的解决方案,所有的功劳都归功于马丁克莱顿指出这个。只需使用
<java ...>
<jvmarg value="Xbootclasspath/a:${myjar.jar}${path.separator}${ant.refid:classpath.id}"/>
</java>
创建新属性
<property name="classpath.property" refid="classpath.id"/>
<java ...>
<jvmarg value="Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.property}"/>
</java>
使用 bootclasspath 和 bootclasspathref
虽然bootclasspathref
只对javac
可用,但bootclasspath
可以嵌套在java
中:
<java fork="true" ...>
<bootclasspath>
<path refid="classpath.id"/>
<pathelement path="${myjar.jar}" />
</bootclasspath>
</java>
但是,此解决方案存在复杂性。
-
<bootclasspath>
替换了实际的引导类路径,从中删除了Java的jar,到目前为止,ant中还没有<bootclasspath/a>
嵌套标签。 - 在 Java SE 9 中,-Xboothclasspath 属性不再可用。只有 -Xboothclasspath/a,所以
<bootclasspath>
在那里不起作用。