如果以下配置在maven中重复

时间:2018-07-04 15:45:48

标签: maven maven-3

在指定编译器版本时,我使用以下两个

amount.addEventListener('input', Convert(event));

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

我想知道这两个是否重复?

1 个答案:

答案 0 :(得分:0)

您可以使用属性变量或显式变量。我建议这样做。

<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-toolchainsanimalsniffer-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>