разрешение tools.jar в плюще - PullRequest
       20

разрешение tools.jar в плюще

4 голосов
/ 11 января 2012

У меня есть проект, который использует плющ для управления своими зависимостями.Я реализую функцию в проекте, которая требует от меня, чтобы включить tools.jar.однако, поскольку tools.jar зависит от платформы, я пытаюсь использовать плющ для разрешения локального файла артефакта.я делаю следующее:

<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}. и я уверен, что мой URL определен правильно, потому что "file: /// C: / foo"является правильным способом указать URL-адрес файла (3 слеша). Проблема, которую я вижу, состоит в том, что он удаляет 2 слеша и пытается "файл: / C: ..." вместо "file: /// C :.. ", как я указал выше. Я также попытался указать путь к файлу напрямую, без $ {java.home}

. Я бы хотел, чтобы этот подход получался через ivy, но я не могуэто работать. какие-нибудь идеи?

Ответы [ 2 ]

4 голосов
/ 13 января 2012

JAVA_HOME должен указывать на местоположение вашего JDK, а не на ваш JRE. Как только вы измените это, ANT перестанет жаловаться на отсутствующую банку инструментов.

Глядя на путь, который вы указали выше, я подозреваю, что у вас уже установлен JDK ....

Анализ

В моей системе банка инструментов находится здесь:

$ 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
1 голос
/ 12 апреля 2013

Мне удалось заставить это работать, используя выделенный преобразователь

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>

ivy.xml

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

У меня работает ...

...