maven-assembly-plugin и версия JVM

#java #compiler-construction #maven

#java #компилятор-конструирование #maven

Вопрос:

возможно ли создать JAR с помощью maven-assembly-plugin , установив конкретную версию компилятора?

Спасибо

Обновить:

Я хотел сказать: maven-compiler-plugin

Комментарии:

1. Плагин assembly собирает только артефакты или файлы, поэтому я не понимаю, чего вы хотите достичь? Вы имеете в виду компиляцию? Чем вам нужно настроить плагин maven-compiler? Возможно, вы могли бы дать немного больше деталей по вашим вопросам.

Ответ №1:

На самом деле вы не можете установить версию компилятора (поскольку maven использует то, что установлено), но вы можете настроить исходный и целевой уровни в maven-compiler-plugin:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin> 
  

Редактировать: Как указывает khmarbaise в комментариях, вы можете указать другой компилятор, если необходимо, но вам придется установить fork значение true и указать путь к исполняемому файлу, что в обычном случае не является тем видом сложности, который вы хотели бы. Но, тем не менее, он прав, это действительно возможно, и, по-видимому, так и было с версии 2.0 плагина компилятора maven.

Комментарии:

1. Пожалуйста, используйте более новую версию плагина maven-compiler-plugin (2.3.X). кроме того, вы можете использовать другой компилятор, если хотите ( maven.apache.org/plugins/maven-compiler-plugin/examples /… ).

2. @khmarbaise: Хорошая находка! Я этого не знал; добавлено в ответ. Я скопировал фрагмент из более старого проекта, который я собирался исправить, конечно, это, вероятно, хорошая идея для обновления.

Ответ №2:

Как объяснил khmarbaise в комментариях, assembly плагин предназначен только для объединения некоторых выходных данных проекта в один пакет (например, ZIP). JVM не участвует в этом шаге.

Чего именно вы хотите достичь? Чтобы указать версию JVM, используемую для сборки JAR, вы можете просто сделать это:

   <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  

В этом случае вы будете компилировать свой проект с использованием JVM 1.6.

Поскольку я не уверен в том, чего вы хотите достичь, есть еще одна вещь, которая может быть вам полезна: вы можете активировать профиль при использовании определенной JVM. Например:

 <profiles>
  <profile>
    <activation>
      <jdk>1.4</jdk>
    </activation>
    ...
  </profile>
</profiles>
  

в этом случае ваш профиль будет активирован, если вы используете JVM 1.4. Если вы используете Maven 2.1 , вы также можете использовать диапазон значений:

 <profiles>
  <profile>
    <activation>
      <jdk>[1.3,1.6)</jdk>
    </activation>
    ...
  </profile>
</profiles>
  

Этот профиль будет активирован для всех версий между 1.3 (включена) и 1.6 (исключена), что означает 1.3, 1.4 и 1.5.

Используя это, вы сможете настроить любой плагин для своей сборки в зависимости от используемой версии JVM.