使用 maven-compiler-plugin 可以为项目指定支持的 jdk:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<fork>true</fork>
<!-- <executable>path-to-javac</executable> -->
<compilerVersion>1.5</compilerVersion>
</configuration>
</plugin>
但是,如果使用另一个版本的 JDK,是否有可能使构建失败?
我有一些使用 javax.xml.bind.annotation.adapters 的代码,它不是 1.5 的一部分,但由于我使用包含此包的 JDK6 构建,因此构建成功。
在 eclipse 中,我收到警告,但不显式修改构建项目时使用的 JDK 的情况下使构建失败可能会很好。
我试过这个:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.5</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
但它什么也没做。我还尝试放入插件管理:
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
但也没有效果。
如果您更改<version/>
标记,maven-enforcer-plugin
将失败。
Maven版本范围规范将告诉您如何指定版本范围。
<version>1.5</version>
将意味着version >= 1.5
您应该声明
<version>[1.5]</version>
这意味着version == 1.5
,如果您使用版本 1.6 的 JDK,则执行器将使构建失败。
尝试使用
<properties>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.test.skip>true</maven.test.skip>
</properties>