此规则可以强制执行有关操作系统和处理器架构的某些值。用于确定是否允许操作系统的值和代码与 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>