параметр компилятора знатока по умолчанию

Прямо сейчас я пишу маленькое 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 я генерирую.

Существует ли более простой способ решить этот вопрос?

29
задан Jeeyoung Kim 28 March 2010 в 02:06
поделиться

4 ответа

Создайте проект только для pom ( 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 . Подробнее см. в документации .

16
ответ дан 28 November 2019 в 02:00
поделиться

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

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

8
ответ дан 28 November 2019 в 02:00
поделиться

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

Да, и вам следует использовать наследование 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). Очень полезный.

5
ответ дан 28 November 2019 в 02:00
поделиться

Я хочу, чтобы все мои пакеты maven компилировались с jdk 1.6

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

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

Помните ...

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

3
ответ дан 28 November 2019 в 02:00
поделиться
Другие вопросы по тегам:

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