需要操作系统版本

此规则可以强制执行有关操作系统和处理器架构的某些值。用于确定是否允许操作系统的值和代码与 Maven 中的操作系统配置文件激活完全相同。

此规则支持以下参数:

  • message - 如果规则失败,则向用户发送可选消息。
  • arch - cpu 架构。
  • 家族- 操作系统家族。可能的家庭有:
    • 多斯
    • 苹果
    • 网络软件
    • 操作系统/2
    • 串联
    • Unix
    • 视窗
    • win9x
    • z/os
    • 操作系统/400
  • name - 操作系统的名称。
  • version - 操作系统的版本。
  • display - 显示检测到的操作系统信息的标志。

Family 是根据从 JDK 检索到的名称字符串的测试计算得出的。使用以下代码从 JDK 中检索 name、arch 和 version 值:

    public static final String OS_NAME = System.getProperty( "os.name" ).toLowerCase( Locale.US );

    public static final String OS_ARCH = System.getProperty( "os.arch" ).toLowerCase( Locale.US );

    public static final String OS_VERSION = System.getProperty( "os.version" ).toLowerCase( Locale.US );

可以在此处找到可能的 arch、name 和 version 值:

各种选项被认为是“和”在一起的,但可以指定任何数量。(即family = windows表示windows,但family = windows和arch = x86表示只有x86处理器上的windows)

任何参数也可以通过前置“!”用于否定 在它面前。例如 !dos 表示除 dos 之外的所有内容。(谁使用 dos 呢?)

由于无法详尽列出各种名称、版本和架构值,因此有一种简单的方法可以显示当前系统的信息:

mvn enforcer:display-info
...
[enforcer:display-info]
Maven Version: 2.0.6
JDK Version: 1.5.0_11 normalized as: 1.5.0
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-os</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireOS>
                  <name>Windows XP</name>
                  <family>windows</family>
                  <arch>x86</arch>
                  <version>5.1.2600</version>
                </requireOS>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>