如何运行构建两次,以便我可以使用不同的依赖项获取两个工件?

时间:2011-12-07 21:28:13

标签: maven maven-2

我有一个Maven项目,我们想要构建两个独立的jar,一个包含32位库,另一个包含64位库。

我们当前的构建将产生32或64位工件,具体取决于运行构建的操作系统。

我们当前如何设置的概述:

    <properties>
            <env.arch>${sun.arch.data.model}</env.arch>
    </properties>

    <build>
    <pluginManagement>

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                    <id>copy-native</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                    <artifactItems>
                    <artifactItem>
                        <groupId>artifact-for-${env.arch}</groupId>
                        <artifactId>artifact.name</artifactId>
                    </artifactItem>
                        ...

                   <plugin>
                       <artifactId>maven-jar-plugin</artifactId>
                       <executions>
                           <execution>
                               <phase>package</phase>
                           </execution>
                       </executions>

所以它正在做的是复制与${env.arch}的属性值匹配的依赖项,然后使用maven-jar-plugin构建jar。

我们需要做的是从一个构建产生2个jar ...一个包含32位依赖项,一个包含64位依赖项。

任何人都可以就如何完成这项工作提供任何指导吗?

由于

1 个答案:

答案 0 :(得分:2)

这可以通过在this answer中指定配置文件中的依赖关系来完成。您必须两次构建项目才能创建两个工件。您可能还应该为每个配置文件配置jar plugin,以便为工件提供不同的分类器。

您也可以在配置文件中设置一个属性,稍后在依赖关系部分使用它而不是环境变量。

您还可以根据当前系统的体系结构激活配置文件,以获得有效的默认情况:

<profile>
    <activation>
        <os>
            <arch>x86</arch>
        </os>
    </activation>
    ...
</profile>

this page上描述了所有激活选项。