1

Ant スクリプトでは、次のようにpath設定しました。

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

javaタスクで使用するように:

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

を次のようなant タスクclasspath.idに設定bootclasspathするにはどうすればよいですか。java

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

${classpath.id}この時点ではアリにはわかりません。

4

2 に答える 2

1

Ant 参照 ID によって参照されるものの値を取得するための特別な構文があります。${ant.refid:classpath.id}の代わりに使用し${classpath.id}ます。

参照については、 ${ant.refid:}を使用して参照の値を取得するを参照してください。

于 2016-07-15T09:04:28.577 に答える
0

完全を期すために、これらは可能な解決策です。

${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のみ使用できますがjavacbootclasspathにネストできますjava:

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

ただし、このソリューションには複雑な問題があります。

  • <bootclasspath>実際の bootclasspath を置き換え、そこから Java の jar を削除します<bootclasspath/a>。これまでのところ、ant にはネストされたタグはありません。
  • Java SE 9 では、-Xboothclasspathプロパティは使用できなくなりました。-Xboothclasspath/aしかないため、そこで<bootclasspath>は機能しません。
于 2016-07-19T15:51:40.513 に答える