4

ivy を使用して依存関係を管理するプロジェクトがあります。tools.jar を含める必要がある機能をプロジェクトに実装しています。ただし、tools.jar はプラットフォームに依存するため、ivy を使用してアーティファクトのローカル ファイルに解決しようとしています。私は次のことをしています:

<dependency org="com.sun" names="tools" rev="1.6.0">
  <artifact name="tools" type="jar" url="file:///${java.home}/../lib/tools.jar"/>
</dependency>

ローカルの ${java.home}/../lib/tools.jar からファイルを取得する必要があります。(注: java.home は JRE インストールを指します)。

ただし、場所の解決に問題があります。私のWindowsマシンでは、「c」がプロトコルであると考えているようです(cは$ {java.home}から来ています。「file:///C:/foo」のため、URLが正しく定義されていると確信していますは、ファイルへの URL を指定する正しい方法です (3 つのスラッシュ)。問題は、2 つのスラッシュが取り除かれ、「file:///C:. ." 上記で指定したように、 ${java.home} を使用せずにファイルへのパスを直接指定しようとしました

このアプローチをツタから取得したいのですが、うまくいきません。何か案は?

4

2 に答える 2

4

JAVA_HOME は、JRE ではなく、JDK の場所を指す必要があります。これを変更すると、ANT はツール jar が見つからないというエラーを出さなくなります。

上記のパスを見ると、すでにJDKがインストールされていると思われます....

分析

私のシステムでは、ツール jar は次の場所にあります。

$ find $JAVA_HOME -name tools.jar
/usr/lib/jvm/java-6-openjdk/lib/tools.jar

奇妙で紛らわしいことに、Java JDK には JRE が含まれています。

$ find $JAVA_HOME -name java
/usr/lib/jvm/java-6-openjdk/bin/java
/usr/lib/jvm/java-6-openjdk/jre/bin/java
于 2012-01-12T20:57:52.150 に答える
1

専用のリゾルバーを使用してこれを機能させることができました

ivysettings.xml

<resolvers>
  <!-- your other resolvers here -->
  <filesystem name="JDK" local="true">
    <artifact pattern="${java.home}/lib/[artifact].[type]" />
    <artifact pattern="${java.home}/../lib/[artifact].[type]" />
    <!-- You can add more patterns to fit your needs for MacOSX etc -->
  </filesystem>
</resolvers>
<modules>
  <module organisation="com.sun" name="tools" resolver="JDK"/>
</modules>

アイビー.xml

<dependency org="com.sun" name="tools"/>

私のために働く...

于 2013-04-12T13:32:21.760 に答える