2011-10-28 67 views
4

我用Maven構建一個簡單的JAR項目的外部參考文件夾(最新)
當運行行家包,我正確地得到jar文件在目標目錄,
我想自定義輸出,以便maven將一些文件和依賴項複製到jar旁邊的目標上。行家定製組件 - 如何複製

當前文件夾的結構是:

/ 
-- resources 
-- src/main/java/com..(project sources) 
-- src/main/assembly (location of the assebmly.xml) 

期望的目標目錄結構是:

target 
    | 
     -- myJar1.0.jar   (the artiface) 
     -- resources   (from the root build folder) 
     -- lib     (all the dependancies) 
      | 
      -- anotherJar-1.0.jar 
      -- anotherJar2-1.0.jar 
      -- anotherJar3-1.0.jar 


我上Apache Web站點讀custom assembly, 我增加了配置Maven的組件-plugin並配置了assembly.xml 但我必須做錯事,我沒有得到正確的輸出,

這裏是assembly.xml

<assembly> 
<id/> 
<formats> 
    <format>dir</format> 
</formats> 
<includeBaseDirectory>false</includeBaseDirectory> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
    </dependencySet> 
</dependencySets> 
<fileSets> 
    <fileSet> 
     <directory>target</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>*.jar</include> 
     </includes> 
    </fileSet> 
    <fileSet> 
     <directory>resources</directory> 
     <outputDirectory>/resources</outputDirectory> 
     <includes> 
      <include>*.*</include> 
     </includes> 
    </fileSet> 
</fileSets> 

的目標目錄包含有依賴的lib,但它位於與工件名稱, 的資源目錄沒有被複制的所有文件夾。

請告知 謝謝

回答

4

按照設計,maven assembly plugin在目標的子文件夾中創建輸出。這是爲了避免與在其中創建的其他工件混淆(classes,test-classes等)。

對於未複製的資源,如果希望複製文件夾的全部內容,則可以省略<includes>部分。第一個<fileSet>部分也是多餘的。

更新assembly.xml放置在根項目的神器,在LIB依賴庫和資源在裝配文件夾的資源文件夾...

<assembly> 
<id/> 
<formats> 
    <format>dir</format> 
</formats> 
<includeBaseDirectory>false</includeBaseDirectory> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
     <excludes> 
      <exclude>${project.groupId}:${project.artifactId}</exclude> 
     </excludes> 
    </dependencySet> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <includes> 
      <include>${project.groupId}:${project.artifactId}</include> 
     </includes> 
    </dependencySet> 
</dependencySets> 
<fileSets> 
    <fileSet> 
     <directory>resources</directory> 
     <outputDirectory>/resources</outputDirectory>> 
    </fileSet> 
</fileSets> 
+0

非常感謝您的幫助,其工作的偉大,你認爲有可能告訴maven將資源複製到jar中(這樣jar和jar外部會有相同的資源文件夾)? – user648026