Подтвердить что ты не робот

Настройка компилятора maven по умолчанию

В настоящее время я пишу небольшое Java-приложение самостоятельно, с несколькими файлами maven pom.xml. Я хочу сделать все мои пакеты maven для компиляции с помощью jdk 1.6, и я не могу найти хороший способ сделать это, не вручную настраивая его на каждом отдельном POM - мне больно копировать и вставлять

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

в каждом файле pom.xml, который я генерирую.

Есть ли более простой способ решить эту проблему?

4b9b3361

Ответ 1

Создайте проект pom-only (<packaging>pom</packaging>) с настройками компилятора (и любыми другими настройками по умолчанию), которые вы хотите. Вы даете это как любой другой проект (отпустите его, разворачивайте в своем репозитории Maven и т.д.).

Поместите объявление parent в начало ваших файлов pom:

<parent>
  <groupId><!-- parent group id --></groupId>
  <artifactId><!-- parent artifact id --></artifactId>
  <version><!-- parent version --></version>
</parent>

Это не очень помогает, если все, что вы хотите установить, - это настройки компилятора. Но если вы обнаружите, что настраиваете множество подключаемых модулей, отчетов и зависимостей одинаково в рамках проекта, вы можете создать одного родителя, чтобы управлять ими всеми.

BTW - будьте осторожны с объявлением dependencies и plugins в родительском файле pom. Обычно вы предпочитаете dependencyManagement и pluginManagement. Подробнее см. .

Ответ 2

Вы можете указать этот плагин и конфигурацию в своем ~/.m2/settings.xml, который затем применит его ко всем проектам.

Однако это имеет недостаток в том, что ваши проекты больше не переносимы - попытка создания одного и того же кода с одним и тем же pom.xml завершится неудачно на других машинах, которые не имеют одинаковых значений settings.xml, как вы.

Ответ 3

Мне надоело копировать и вставлять

Да, и вы должны использовать POM inheritance, чтобы избежать этого и настроить 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). Очень полезно.

Ответ 4

Я хочу сделать все мои пакеты maven для компиляции с помощью jdk 1.6

Если это многомодульный проект, просто установите эти параметры в POM верхнего уровня под pluginManagement.

Если у вас есть много независимых проектов, просто скопируйте и вставьте эту конфигурацию. Остерегайтесь "умных" решений, таких как установка этого в глобальном масштабе. Когда-нибудь вам захочется использовать разные настройки компилятора для одного или двух ваших проектов, и начнется кошмар: -)

Помните,...

Держите все как можно проще, но не проще.