此规则可以强制执行有关操作系统和处理器架构的某些值。用于确定是否允许操作系统的值和代码与 Maven 中的操作系统配置文件激活完全相同。
此规则支持以下参数:
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>