2016-07-14 58 views
1

在Ant脚本属性使用Ant路径,我有path集:在引导类路径

<path id="classpath.id"> 
    <pathelement path="somepath_1" /> 
    ... 
    <pathelement path="somepath_n" /> 
</path> 

所以,我用它java任务:

<java ... classpathref="classpath.id"> 
... 
</java> 

如何使用classpath.id来设置bootclasspath in java ant任务类似于:

<java ...> 
    <jvmarg value="-Xbootclasspath/a:${myjar.jar}${path.separator}${classpath.id}"/> 
</java> 

${classpath.id}目前还不知道蚂蚁。

回答

0

为了完整起见,这些都是可能的解决方案:

使用$ {ant.refid:}前缀

这是干净的解决方案,并全部归功于martin claytonpointing 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> 

使用启动类路径和bootclasspathref

虽然bootclasspathref只提供给javacbootclasspath可以嵌套在java

<java fork="true" ...> 
    <bootclasspath> 
    <path refid="classpath.id"/> 
    <pathelement path="${myjar.jar}" /> 
    </bootclasspath> 
</java> 

虽然这种解决方案存在复杂性。

  • <bootclasspath>代替实际的引导类路径,从中移除Java的罐子,并且在蚂蚁没有<bootclasspath/a>嵌套的标签为止。
  • 在java SE 9中,-Xboothclasspath属性不再可用。只有-Xboothclasspath/a,所以<bootclasspath>在那里不起作用。