2016-07-14 53 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>在那裏不起作用。
相關問題