2015-09-07 43 views
0

我使用Maven構建多模塊項目;Maven - 在多模塊項目中使用匯編插件創建分發文件

  • 其包括9個戰爭模塊

每個模塊具有包含關於如何打包指令自身的POM;

<packaging>war</packaging> 

父POM然後負責發起每個模塊上Maven的生命週期和推動到一個工件管理器(的Nexus)

<modules> 
    <module>module1</module> 
    <module>module2.... 

我想用組件插件打包每個WAR文件是由每個模塊早期構建到一個ZIP文件中的。我試圖通過在父POM中定義一個程序集描述符來實現這一點,它爲每個模塊定義了一個單獨的dependencySet(使用groupID,artifactID和版本來查找本地回購中的WAR)。

我試過使用下面的程序集文件來實現這個功能;

<assembly> 
    <id>war</id> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <dependencySets> 
    <dependencySet> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
     <include>com:test-web:war:${pom.version}</include> 
     </includes> 
     <outputFileNameMapping>test-web.war</outputFileNameMapping> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

這是我父母POM中的插件配置;

<plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <version>2.5.3</version> 
        <executions> 
         <execution> 
          <id>distribution-package</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
          <configuration> 
           <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot> 
           <descriptors> 
            <descriptor>assembly.xml</descriptor> 
           </descriptors> 
           <formats> 
            <format>zip</format> 
           </formats> 
           <includeBaseDirectory>false</includeBaseDirectory> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

此方法是否正確? 此外,從我的本地回購中提取WAR文件是否有意義?我應該在每個子模塊目標文件夾中使用輸出嗎?

回答

2

1)在你的父POM,我會去喜歡

<modules> 
<module>module1</module> 
<module>distibution</module> 
<module>module2.... 

(創建分發額外的模塊)爲了父POM從分發中分離出來。

2)您不應該在每個子模塊目標文件夾中使用輸出。添加所有戰爭作爲分佈的依賴關係。這樣Maven就可以知道它必須建立最後的分佈。 3)提示:用$ {project.version}替換$ {pom.version}(我認爲前者已被棄用,如果它可以工作)

相關問題