Maven:如何允许某个操作系统进行构建?

时间:2015-01-14 10:48:02

标签: maven maven-plugin maven-enforcer-plugin

我知道我可以使用这样的maven-enforcer-plugin来要求特定的OS系列:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <executions>
        <execution>
            <id>check-os</id>
            <goals>
                <goal>enforce</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
                <rules>
                    <requireOS>
                        <family>unix</family>
                        <message>
                            You should use Unix to build this.
                        </message>
                    </requireOS>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

但我可以定义多个可用于构建的操作系统(例如Unix和Windows)吗?

无法找到任何直接的方法,所以我感谢任何解决方法。

2 个答案:

答案 0 :(得分:3)

您可以使用配置文件管理不同的操作系统

例如:

<profiles>
<profile>
  <id>exec-windows</id>
  <activation>
    <os>
      <family>windows</family>
    </os>
  </activation>
  <build> <plugins> ....

答案 1 :(得分:2)

<requireOS>元素的主要目标是在构建依赖于平台的期间进行一些指令,即您需要根据当前的操作系统执行某些操作,因此它赢得了'如果为某些操作系统定义配置某些插件并丢弃其他操作系统,那么这很有意义。

本着这种精神,<requireOS>不允许范围限制(您不能将多个操作系统定义为:<requireOS>[windows,linux]</requireOS>)。

与此同时,您仍然可以编写自己的继承EnforcerRule的自定义规则,并且只有当前操作系统未进入自定义规则所需操作系统范围时才会使构建失败。

我已经实施了一次使用过的规则。您可以查看multiple-os-enforcer-rule project URL,其中可以找到有关如何使用自定义规则的详细信息。

有关自定义规则实施的更多信息,请参阅Maven Docs