JDK tools.jar как зависимость знатока

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

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

Проблема состоит в том, что путь не корректен для Mac OS X (однако, это корректно для Windows и Linux). Для него корректный путь является $ {java.home}/../Classes/classes.jar.

Я ищу путь для определения свойства знатока, таким образом, что, если система обнаруживается как Mac OS X, значение установлено к $ {java.home}/../Classes/classes.jar, иначе это установлено на $ {java.home}/../lib/tools.jar (как он, возможно сделать с МУРАВЬЕМ). У кого-то есть идея?

73
задан Laurent 19 October 2014 в 09:28
поделиться

3 ответа

Спасибо, что познакомили меня с профилями maven.

Я использовал профиль, как указано выше, и активировал профиль на основе наличия нужного файла :

<profiles>
    <profile>
        <id>default-profile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <file>
                <exists>${java.home}/../lib/tools.jar</exists>
            </file>
        </activation>
        <properties>
            <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
        </properties>
    </profile>
    <profile>
        <id>mac-profile</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <file>
                <exists>${java.home}/../Classes/classes.jar</exists>
            </file>
        </activation>
        <properties>
            <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
        </properties>
    </profile>
</profiles>

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

39
ответ дан 24 November 2019 в 12:24
поделиться

Вот для чего нужны профили, извлеките путь к свойству, настройте профили для Windows, OSX и т. Д. И определите значения свойств соответствующим образом.

Вот страница документации, на которой обсуждаются профили для ОС: Модель локальных настроек Maven

В итоге она должна выглядеть примерно так:

  <profiles>
    <profile>
      <id>windows_profile</id>
      <activation>
        <os>
          <family>Windows</family>
        </os>
      </activation>
      <properties>
        <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
      </properties>
    </profile>
    <profile>
      <id>osx_profile</id>
      <activation>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
      </properties>
    </profile>
  </profiles>
45
ответ дан 24 November 2019 в 12:24
поделиться

мое решение:

  1. поместите Sun tools.jar в $JAVA_HOME/lib
  2. создайте символическую ссылку в $JAVA_HOME/.. названную библиотеку, где цель будет $JAVA_HOME/lib
-11
ответ дан 24 November 2019 в 12:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: