2013-11-27 70 views
1

我試圖將一些groovy(gradle)代碼轉換爲maven。在可能的情況下,我們試圖使用現成的插件而不是自定義的插件。maven assembly插件:對目錄的控制

我們想使用maven assembly插件來組裝一個我們將用於部署的tar文件。目錄結構對我們的部署工具非常重要,我似乎在爭取讓maven去做我想做的事情。

最底層代碼片段的關鍵問題在於jar文件以tar文件中的target目錄結尾。我的問題是:這可以避免嗎?還是應該削減我的損失,並寫一個簡單的自定義插件來做到這一點?

(其可能我把2和2在一起並得到5,但它似乎與此相關的錯誤here

目錄結構

. 
└── project1 
    ├── config 
    │   └── foo.config 
    ├── pom.xml 
    ├── src 
    │   └── main 
    │    ├── assembly 
    │    │   └── assembly.xml 
    │    └── java 
    │     └── com 
    │      └── foo 
    │       └── bar 
    │        └── App.java 
    └── target 
     ├── archive-tmp 
     ├── classes 
     │   └── App.class 
     ├── maven-archiver 
     │   └── pom.properties 
     ├── my-static-jar-name-bundle.tar 
     └── my-static-jar-name.jar 

大會文件(運行構建之後) tar文件的

<assembly> 
    <id>bundle</id> 
    <formats> 
     <format>tar</format> 
    </formats> 
<includeBaseDirectory>false</includeBaseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>${basedir}</directory> 
      <outputDirectory>/spooge</outputDirectory> 
     <includes> 
       <include>**/*.jar</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/config</directory> 
      <outputDirectory>appconfig</outputDirectory> 
     <includes> 
       <include>**/*.config</include> 
      </includes> 
     </fileSet> 
</fileSets> 
</assembly> 

內容時構建已經完成(注意罐子是一個「目標」子文件夾)

tar xvf project1/target/my-static-jar-name-bundle.tar 
x spooge/target/my-static-jar-name.jar 
x appconfig/foo.config 

回答

1

嘗試改變文件集,如下所示:

<fileSet> 
    <directory>${project.build.directory}</directory> 
    <outputDirectory>/spooge</outputDirectory> 
    <includes> 
     <include>**/*.jar</include> 
    </includes> 
</fileSet> 

它的當前配置,裝配插件搜索project1的整個目錄的任何jar文件的方式。它發現的唯一一個是在target目錄中,所以Maven很高興地將它包含在tar中。我建議的改變使用project1/target作爲起點,所以我認爲你會得到你想要的結果。

+0

輝煌,謝謝! – phatmanace