Java 在bootclasspath中将ant路径用作属性
在ant脚本中,我设置了路径:Java 在bootclasspath中将ant路径用作属性,java,ant,bootclasspath,Java,Ant,Bootclasspath,在ant脚本中,我设置了路径: <path id="classpath.id"> <pathelement path="somepath_1" /> ... <pathelement path="somepath_n" /> </path> 如何使用classpath.id在javaant任务中设置bootclasspath,类似于: <java ...> <jvmarg value="-Xbootclasspa
<path id="classpath.id">
<pathelement path="somepath_1" />
...
<pathelement path="somepath_n" />
</path>
如何使用classpath.id
在java
ant任务中设置bootclasspath
,类似于:
<java ...>
<jvmarg value="-Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.id}"/>
</java>
此时,ant不知道
${classpath.id}
。有一种特殊的语法用于获取ant引用id引用的值。请使用${ant.refid:classpath.id}
而不是${classpath.id}
请参阅以获取参考。为完整起见,以下是可能的解决方案: 使用${ant.refid:}前缀 这是最干净的解决方案,所有的功劳都归功于它。只用
<java ...>
<jvmarg value="Xbootclasspath/a:${myjar.jar}${path.separator}${ant.refid:classpath.id}"/>
</java>
不过,这种解决方案也有一些复杂之处
替换了实际的bootclasspath,从中删除了java的JAR,到目前为止,ant中还没有
嵌套标记李>- 在JavaSE9中,-Xboothclasspath属性不再可用。只有-Xboothclasspath/a,因此
在那里不起作用李>
<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>
<java fork="true" ...>
<bootclasspath>
<path refid="classpath.id"/>
<pathelement path="${myjar.jar}" />
</bootclasspath>
</java>