需要 Java 版本

此规则强制执行某些 Java JDK 版本。该规则使用E​​nforcer 版本范围语法来定义允许的版本。

此规则支持以下参数:

  • message - 如果规则失败,则向用户发送可选消息。
  • 版本-允许的 JDK范围

检索JDK版本并在检查之前进行以下处理:

  1. 删除第一个数字之前的所有非数字字符。(构建 1.5.0_07-b03 变为 1.5.0_07-b03)
  2. 将所有 '_' 和 '-' 替换为 '.' (1.5.0_07-b03 变为 1.5.0.07.b03)
  3. 删除所有非数字字符 "[^0-9] 并使用 Integer.parseInt() 转换每个部分(1.5.0_07-b03 变为 1.5.0.7.3)
  4. 在'.'上拆分字符串 并取前 3 个部分,用“。”分隔。并在第四部分后添加“-”(1.5.0.7.3 变为 1.5.0-7)

此预处理将各种 JDK 版本字符串规范化为标准 xyz-b 版本号。因此,您所需的范围应使用 xyz-b 格式进行比较。有一种简单的方法可以查看您当前的 JDK 字符串将如何被规范化:

mvn enforcer:display-info
...
[enforcer:display-info]
Maven Version: 2.0.8
JDK Version: 1.5.0_11 normalized as: 1.5.0-11
OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1

示例插件配置:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>enforce-java</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>1.6.0</version>
                </requireJavaVersion>
              </rules>    
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

如果您想为 JDK 强制执行某个供应商字符串,您将使用RequireJavaVendor规则