在ant脚本中,我设置了path
:
<path id="classpath.id">
<pathelement path="somepath_1" />
...
<pathelement path="somepath_n" />
</path>
因此我在java
任务中使用它:
<java ... classpathref="classpath.id">
...
</java>
如何使用classpath.id
在bootclasspath
ant任务中设置java
,类似于:
<java ...>
<jvmarg value="-Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.id}"/>
</java>
${classpath.id}
此时蚂蚁不知道。
答案 0 :(得分:1)
有一种特殊的语法可以获取Ant引用ID引用的内容的值。使用${ant.refid:classpath.id}
代替${classpath.id}
。
答案 1 :(得分:0)
为了完整起见,这些是可能的解决方案:
使用$ {ant.refid:}前缀
这是最干净的解决方案,所有功劳归于martin clayton pointing to this one。只需使用
<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>
替换了实际的bootclasspath,从中删除了java的jar,到目前为止,ant中没有<bootclasspath/a>
嵌套标记。 <bootclasspath>
在那里不起作用。