2016-03-18 79 views
0

當我運行mvn clean package時,我想創建.zip文件而不是.jar文件。該.zip文件應該有一個目錄結構如下 -如何在Maven中進行自定義打包?

/ 
|- bin 
|- conf 
| |- All Property Files 
|- lib 
    |- All JAR Files (packaged jar and its dependency jar OR a single fat jar) 

我搜索了很多,但我最終得到的唯一的事情就是改變主項目文件夾的目錄結構,而不是打包的內容。我知道各種包裝類型,如JAR,WAR,EAR等,但不知道是否可以製作.zip文件。

是否可以製作.zip而不是JAR文件?如果是這樣,它的目錄結構如何以及可以被操縱?

如果我沒有按照StackOverflow的規範或錯過我應該提及的細節,請做答案或評論。


更新:發現如何而是創建.zip文件的answer。但它不包含有關更改目錄結構的信息。


更新:解決它自己。見下面的答案。

回答

0

找到了關於如何創建.zip文件的answer。似乎與descriptor.xml文件調整將給我想要的結果。以下是我的descriptor.xml文件。

<assembly> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>${project.build.directory}</directory> 
      <outputDirectory>lib</outputDirectory> 
      <includes> 
      <include>*.jar</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <directory>${project.build.directory}/lib</directory> 
      <outputDirectory>lib</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/src/main/resources/config</directory> 
      <outputDirectory>config</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/src/main/resources/bin</directory> 
      <outputDirectory>bin</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 
2

用於定製打包的專用Maven插件是Maven Assembly plugin。 有可能使用該插件來改變包裝結構和類型:

  • 拉鍊
  • 焦油
  • tar.gz的(或TGZ)
  • TAR.BZ2(或tbz2)
  • DIR
  • 戰爭
  • 自定義(見ArchiveManager)

There is the documentation包含插件配置的示例。

根據該文件,你需要:

  • 設置格式(ZIP,TGZ,...)
  • 激活當前配置文件的插件
  • 定義一個特定的包結構在默認情況下在src/assembly文件夾中找到專用程序集bin.xml文件
  • 很明顯,調用mvn程序包階段(在安裝過程中自動執行...)以便發生奇蹟:)
+0

將描述符文件保存在src/assembly中是否是一種好的做法,或者我可以將它保留在任何位置,因爲我將它保留在項目文件夾中。 –

+1

默認情況下,** src/assembly **文件夾不是源文件夾,所以它不會成爲最終打包項目的一部分(未交付)。 文件的位置和名稱必須在POM中的插件配置期間指定。 ' org.apache.maven.plugins 行家組裝-插件 <結構> SRC /組件/ bin.xml my_super_project - $ {pom.version} ...「 –

相關問題