Maven 编译器插件 jdk 源和目标版本
Maven compiler plugin jdk versions for source and target
我在 pom.xml 中对 maven-compiler-plugin 进行了以下配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
jdk 的源版本和目标版本应该是什么?它如何取决于我计算机上安装的 jdk 版本?他们可能不同吗?例如安装 jdk 是 1.8,源参数 - 1.6,目标 - 1.7。
与source/target你只定义javac
的开关,这意味着产生兼容的代码。例如,如果您已经安装了 jdk 8 并且想要创建 java 7 可运行 类。
但它根本不检查您是否安装了 JDK 8。如果您安装了 JDK 7,这也适用。
如果您确实需要检查已安装的 JDK 版本,您必须通过 maven-enforcer-plugin 并检查已安装的 JDK...
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>enforce-java</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.8.0</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
有了上面的内容,你就不能再在 JDK 7 上构建了...只能使用 JDK 8...
顺便说一句:你为什么要使用这么旧的 maven-compiler-plugin 版本?
我在 pom.xml 中对 maven-compiler-plugin 进行了以下配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
jdk 的源版本和目标版本应该是什么?它如何取决于我计算机上安装的 jdk 版本?他们可能不同吗?例如安装 jdk 是 1.8,源参数 - 1.6,目标 - 1.7。
与source/target你只定义javac
的开关,这意味着产生兼容的代码。例如,如果您已经安装了 jdk 8 并且想要创建 java 7 可运行 类。
但它根本不检查您是否安装了 JDK 8。如果您安装了 JDK 7,这也适用。
如果您确实需要检查已安装的 JDK 版本,您必须通过 maven-enforcer-plugin 并检查已安装的 JDK...
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>enforce-java</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.8.0</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
有了上面的内容,你就不能再在 JDK 7 上构建了...只能使用 JDK 8...
顺便说一句:你为什么要使用这么旧的 maven-compiler-plugin 版本?