Прямо сейчас я пишу маленькое JAVA-приложение своим собственным с немногими знаток файлы pom.xml. Я хочу сделать все свои пакеты знатока для компиляции с jdk 1.6, и я не могу найти хороший способ сделать это, вручную не устанавливая его на каждом АНГЛИЧАНЕ - я сыт копией-и-вставкой по горло
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
в каждом файле pom.xml я генерирую.
Существует ли более простой способ решить этот вопрос?
Создайте проект только для pom (
) с настройками компилятора (и любыми другими настройками по умолчанию), которые вам нужны. Вы относитесь к нему как к любому другому проекту (выпустите его, разверните в своем репозитории Maven и т. Д.).
Поместите объявление parent
в начало ваших файлов pom:
<parent>
<groupId><!-- parent's group id --></groupId>
<artifactId><!-- parent's artifact id --></artifactId>
<version><!-- parent's version --></version>
</parent>
Это не очень поможет, если все, что вы хотите установить, - это настройки компилятора. Но если вы обнаружите, что настраиваете множество плагинов, отчетов и зависимостей одинаково для всего проекта, вы можете создать одного родителя, который будет управлять ими всеми.
Кстати - будьте осторожны при объявлении зависимостей
и плагинов
в родительском файле pom. Обычно вы предпочитаете dependencyManagement
и pluginManagement
. Подробнее см. в документации .
Вы можете указать этот плагин и конфигурацию в своем ~ / .m2 / settings.xml
, который затем будет применен ко всем проектам. .
Однако это имеет обратную сторону - ваши проекты больше не переносятся - попытка создания того же кода с тем же pom.xml не удастся на других машинах, которые не имеют таких же значений settings.xml
. как ты.
Мне надоело копирование и вставка
Да, и вам следует использовать наследование POM , чтобы избежать этого и настроить maven-compiler-plugin
в родительском POM.
Другой вариант - использовать решение, предложенное @matt (и он привел плюсы и минусы использования settings.xml
).
В обоих случаях это обычно параметр, который мне нравится проверять с помощью maven-enforcer-plugin
и его правила requireJavaVersion
, которое вы должны настроить следующим образом:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.6</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
Но он может сделать больше (например, проверить версию maven). Очень полезный.
Я хочу, чтобы все мои пакеты maven компилировались с jdk 1.6
Если это многомодульный проект, просто поместите эти настройки в POM верхнего уровня в pluginManagement
.
Если у вас много независимых проектов, просто скопируйте и вставьте эту конфигурацию. Остерегайтесь «умных» решений, таких как установка этого где-нибудь в глобальном масштабе. Когда-нибудь вы захотите использовать разные настройки компилятора для одного или двух ваших проектов, и начнется кошмар: -)
Помните ...
Делайте вещи как можно проще, но не проще ].