我希望創建一個我的「目標」目錄($ {project.build.directory)的zip存檔。使用maven-assembly-plugin似乎對我來說這樣一個簡單的任務有點矯枉過正(而且有點複雜 - 爲什麼我必須使用另一個文件,程序集描述符來處理這樣的任務) 我找不到看起來更簡單的maven-zip-plugin在http://repo1.maven.org/maven2存儲庫中。創建maven「目標」目錄的zip存檔
任何輸入?
我希望創建一個我的「目標」目錄($ {project.build.directory)的zip存檔。使用maven-assembly-plugin似乎對我來說這樣一個簡單的任務有點矯枉過正(而且有點複雜 - 爲什麼我必須使用另一個文件,程序集描述符來處理這樣的任務) 我找不到看起來更簡單的maven-zip-plugin在http://repo1.maven.org/maven2存儲庫中。創建maven「目標」目錄的zip存檔
任何輸入?
如果bin
預定義裝配描述符不符合你的需求,那麼你有三種選擇:
就個人而言,我只想使用maven具組件插件具有以下zip.xml
描述:
<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>bin</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
</fileSet>
</fileSets>
</assembly>
而在你的POM:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- append to the packaging phase. -->
<goals>
<goal>single</goal> <!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
如果您對生成的.zip文件沒有任何「特殊」需求,可以使用其中一個預定義的Maven Assembly描述符。預定義的組裝描述符可以輕鬆快捷地創建特定的組件,而無需提供您自己的組裝描述符。假設您想使用bin
預定義的描述符。然後在POM的部分的plugins
部分中,您可以添加以下內容。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>bin</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
當然,一如既往與Maven,如果你想要做一些超出默認配置,你必須創建自己的配置,在這種情況下,這意味着你自己的裝配描述符。
預先定義的描述符列表記錄在here。
不壞的選擇。然而,在我的過程結束時,目標目錄只包含一個exe文件和一個包含其他exe文件的目錄 - al linstallers。我只是想將它們壓縮在一起 – Yaneeve 2010-03-25 10:07:49
因此,您的麻煩是默認描述符將打包超過您的需要,比如工作文件夾的內容等。是否存在要打包的目標下的特定文件夾(例如'$ {project.build.directory}/installers'),但您希望省略其他目錄?或者你有其他的目標嗎? – RTBarnard 2010-03-25 10:12:54
我已經從$ {project.build.directory}目錄中刪除了所有不需要的文件和目錄,只是希望完全壓縮其內容。如果你沒有比Pascal更好的建議,我想我只需要創建「冗餘」彙編文件,並選擇他的解決方案... – Yaneeve 2010-03-25 11:55:15
不起作用 - 內置的「bin」是用過的。而我無法弄清楚如何指向非內置的自定義。 – 2013-07-10 21:29:22
在裝配插件上使用antrun插件有一個優勢,因爲它在zip內部以不同方式存儲文件大小。如果您使用'ZipInputStream'閱讀壓縮文件並使用'getSize()',那麼您將獲得由antrun創建的zip大小的條目大小,對於使用assembly創建的zip文件,它會返回-1。 – 2016-09-16 13:55:36