#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.