Maven 强制最低 Java 版本
很多时候,如果部署环境没有特定的操作系统,或者它不包含最低要求的 Java 版本,我们需要强制 Java 构建过程应立即停止。 如果您正在使用 maven 进行构建,则可以使用 maven 强制执行器插件轻松配置这些限制。
强制执行器插件提供了控制某些环境约束的目标,例如 Maven 版本,JDK 版本和 OS 系列以及更多标准规则和用户创建的规则。
阅读更多:最新规则集
让我们通过一个例子来看看如何使用这个插件:
1)创建 Maven 项目
$ mvn archetype:generate
-DgroupId=com.howtodoinjava
-DartifactId=EnforceJavaVersionDemo
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
2)添加 Maven 执行器插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M2</version>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>2.0.6</version>
</requireMavenVersion>
<requireJavaVersion>
<version>1.5</version>
</requireJavaVersion>
<requireOs>
<family>unix</family>
</requireOs>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在这里,所需的依赖项是操作系统是 linux,maven 版本是 2.0.6,而 Java 版本是 1.5。 我在 Windows 机器上运行此代码,因此,上面的pom.xml
文件应兼容操作系统。
3)演示
版本不匹配的项目进行编译。
$ mvn compile
编译失败,并出现以下错误。
[INFO] --- maven-enforcer-plugin:1.2:enforce (enforce-versions) @ EnforceJavaVer
sionDemo ---
[WARNING] Rule 2: org.apache.maven.plugins.enforcer.RequireOS failed with messag
e:
OS Arch: amd64 Family: windows Name: windows 7 Version: 6.1 is not allowed by Fa
mily=unix
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.000s
[INFO] Finished at: Tue Jan 08 11:03:01 IST 2013
[INFO] Final Memory: 7M/132M
同样,如果我用 3.0.6 更新了 Maven 最低要求,而我的 Maven 版本是 3.0.4,则它会这样抱怨:
[INFO] --- maven-enforcer-plugin:1.2:enforce (enforce-versions) @ EnforceJavaVer
sionDemo ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireMavenVersion failed w
ith message:
Detected Maven Version: 3.0.4 is not in the allowed range 3.0.6.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.000s
[INFO] Finished at: Tue Jan 08 11:03:01 IST 2013
[INFO] Final Memory: 7M/132M
您也可以测试最低的 Java 版本。
学习愉快!
参考: http://maven.apache.org/enforcer/maven-enforcer-plugin/usage.html