使用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>
但也没有效果。
答案 0 :(得分:1)
如果您更改maven-enforcer-plugin
代码,<version/>
将失败。
Maven Version Range Specification将告诉您如何指定版本范围。
<version>1.5</version>
意味着version >= 1.5
您应该声明
<version>[1.5]</version>
这将意味着version == 1.5
,如果您使用版本为1.6的JDK,则实施者将无法进行构建。
答案 1 :(得分:0)
尝试使用
<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>