2017-05-05 58 views
1

我需要將一個jar包A及其所有依賴項B.jar,C.jar等打包成一個扁平的zip文件,即我想創建一個工件作爲拉鍊(或罐),其具有所述文件結構將一個jar包及其依賴項打包成一個側面神器(不生成一個胖jar)

A.jar 
B.jar 
C.jar 
... 

並將其部署爲側僞影爲A.jar。請注意,工件不應該解壓縮,而只是並排放置在側面工件中,而沒有任何目錄結構。

我如何通過Maven實現這一目標?

原因是我們的生產環境需要獲取一個解壓到目錄中的zip文件。之後,一個指定的Main類被啓動。

+0

您是否已經使用程序集插件嘗試了一些東西? – Tome

+0

不,我想我可以通過使用dependency-copy和assembly-plugin來構建一些東西,但如果有更簡單的東西,我不想通過複製文件來重新發明輪子。 –

回答

1

如果你有一個包含已經依賴的pom文件,你可以使用maven-assembly-plugin和一個合適的程序集描述符,並且不需要使用maven-dependency-plugin來複制一些東西。你需要有一個裝配描述符看起來像這樣:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 

    <id>xyz</id> 

    <formats> 
     <format>zip</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <dependencySets> 
     <dependencySet> 
      <outputDirectory>/</outputDirectory> 
      <useProjectArtifact>false</useProjectArtifact> 
      <unpack>false</unpack> 
      <scope>compile</scope> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

這將產生沒有任何文件夾結構相應的zip文件,但包含它裏面的依賴jar文件。

相關問題