2011-12-07 19 views
1

我有一个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罐子。

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

任何人都可以提供任何指导我们如何完成这件事?

感谢

回答

2

这可以通过指定像this answer在配置文件的依赖性来完成。您将不得不两次构建您的项目以创建两个工件。您应该也可以配置每个配置文件jar plugin以将不同的分类器分配给工件。

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

您也可以激活根据当前系统的体系结构型材,有一个工作默认情况下:

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

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

+0

谢谢。我怎样才能建立程序2x通过?通过调用maven两次,比如通过“mvn compile -Dprofile1”后跟“mvn package -Dprofile2”? – Cuga

+0

是的,通过使用不同配置文件调用'mvn package'两次。理想情况下,这可以通过构建服务器完成。 –

+0

谢谢!这是我们要做的 – Cuga

相关问题