基于os家族的maven条件

时间:2012-01-22 19:00:14

标签: maven parameters operating-system

我正在尝试执行以下操作:

                <execution>
                    <id>copy-jre</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.sun</groupId>
                                <artifactId>jre</artifactId>
                                <version>${jdk.version}-${os.family}-x64</version>
                                <type>zip</type>
                            </artifactItem>                             
                        </artifactItems>
                        <outputDirectory>${target-deployer.cnc.dir}/java/${os.family}/x86_64/</outputDirectory>
                    </configuration>
                </execution>

我希望在我的情况下基于os-windows或linux复制依赖项。 但我找不到正确的参数

2 个答案:

答案 0 :(得分:16)

您可以使用profiles执行此操作。

e.g。

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

在您的情况下,您可能只想在配置文件的激活元素中指定os / family。

答案 1 :(得分:3)

Sonatype一书,"Maven: The Complete Reference"第9.2节介绍了maven属性,并列出了与您的问题相关的以下属性:

java.version
os.name

java.version属性似乎可用,在我的测试中返回“1.6.0_27”。但是,os.name属性并不是您所要求的“os系列”。在我的情况下,os.name返回“Windows Vista”,我想这不是你所希望的。我不知道有一个属性来获取os系列,因此我建议使用maven配置文件作为prunge,以处理使用所需操作系统配置插件。