# Maven 强制最低 Java 版本

> 原文： [https://howtodoinjava.com/maven/how-to-enforce-operating-system-and-minimum-java-version-using-maven-enforcer-plugin/](https://howtodoinjava.com/maven/how-to-enforce-operating-system-and-minimum-java-version-using-maven-enforcer-plugin/)

很多时候，如果部署环境没有特定的操作系统，或者它不包含**最低要求的 Java 版本**，我们需要强制 Java 构建过程应立即停止。 如果您正在使用 maven 进行构建，则可以使用 **maven 强制执行器插件**轻松配置这些限制。

[强制执行器插件](https://maven.apache.org/enforcer/maven-enforcer-plugin/ "maven enforcer plugin")提供了控制某些环境约束的目标，例如 Maven 版本，JDK 版本和 OS 系列以及更多标准规则和用户创建的规则。

> 阅读更多：[最新规则集](https://maven.apache.org/enforcer/enforcer-rules/index.html)

让我们通过一个例子来看看如何使用这个插件：

## 1）创建 Maven 项目

```java
$ mvn archetype:generate 
		-DgroupId=com.howtodoinjava 
		-DartifactId=EnforceJavaVersionDemo
		-DarchetypeArtifactId=maven-archetype-quickstart 
		-DinteractiveMode=false

```

## 2）添加 Maven 执行器插件

```java
<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）演示

版本不匹配的项目进行编译。

```java
$ mvn compile

```

编译失败，并出现以下错误。

```java
[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，则它会这样抱怨：

```java
[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](https://maven.apache.org/enforcer/maven-enforcer-plugin/usage.html "maven enforcer plugin")