Если следующая конфигурация дублируется в Maven - PullRequest
0 голосов
/ 04 июля 2018

при указании версии компилятора я использую следующие два

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

и

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

Мне интересно, дублируются ли эти два?

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать вариант свойств или явный вариант. Я бы предложил сделать так.

<project..>

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <build>
    <pluginManagement>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artfiactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
      </plugin>
    </pluginManagement>
  </build>
  ..
</project>

Обычно я рекомендую пользователям иметь корпоративный pom, который содержит определение версий плагинов (в нашем случае часть pluginManagement, включая и другие плагины), и в вашем собственном pom вы можете использовать свойства для определения source/target что построить для этого будет выглядеть так:

<project..>

  <parent>
     <groupId>com.acme</groupId>
     <artfiactId>corporate-pom</artifactId>
     <version>3.0.2</version>
  </parent>      

  <properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  </build>
  ..
</project>

Вышеприведенные сценарии не являются на 100% правильной причиной, так как выше вы можете использовать части JDK 8 в своем коде (если вы компилируете с JDK 8), что приведет к сбою, если вам потребуется запустить его на JRE 7. Чтобы справиться с этим правильно использовать maven-toolchains и animalsniffer-maven-plugin

Если вы используете JDK 9+, вы должны улучшить свою конфигурацию следующим образом:

<project..>

  <properties>
    <maven.compiler.release>9</maven.compiler.release>
  </properties>

  <build>
    <pluginManagement>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artfiactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
      </plugin>
    </pluginManagement>
  </build>
  ..
</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...