插件名稱:maven-assembly-plugin
目前最新的版本:3.2.0
作用:該插件可以使使用者根據自己的需求自定義打包規則和打包類型
pom檔案配置示例:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>testProject</finalName> <!-- 配置打包後的檔案字首名 -->
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor> <!-- 配置檔案路徑 -->
</descriptors>
</configuration>
<executions> <!-- 配置assembly goals -->
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
複制
package.xml檔案自定義打包配置:
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<!-- 最終打封包件的字尾,格式為 ${fileName}-bin -->
<id>bin</id>
<!-- 最終打包成一個用于釋出的zip檔案 -->
<formats>
<format>zip</format>
</formats>
<!-- 把依賴的jar包打包進zip的lib目錄下-->
<dependencySets>
<dependencySet>
<!-- 不使用項目的artifact -->
<useProjectArtifact>false</useProjectArtifact>
<!-- 打包進zip檔案下的lib目錄中 -->
<outputDirectory>lib</outputDirectory>
<!-- 第三方jar不要解壓 -->
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<!-- 檔案配置 -->
<fileSets>
<!-- 把項目的配置檔案,打包進zip包的config目錄下 -->
<fileSet>
<!-- 配置項目中需要被打包的檔案的存儲路徑 -->
<directory>${project.basedir}/src/main/resources/${env}</directory>
<outputDirectory>/config</outputDirectory>
<includes>
<!-- 可以指定單個檔案 -->
<!--<include>project.config</include>-->
<!-- 可以直接指定所有檔案 -->
<include>*.*</include>
</includes>
</fileSet>
<!-- 把項目的配置檔案,打包進zip包的根目錄下 -->
<fileSet>
<directory>${project.basedir}/src/main/resources/${env}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>scf*.xml</include>
</includes>
</fileSet>
<!-- 把項目自己編譯出來根目錄下的jar檔案,打包進zip檔案的根目錄 -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- 把項目自己編譯出來的jar檔案夾下的jar檔案,去除第三方jar,打包進zip檔案的根目錄 -->
<fileSet>
<directory>${project.build.directory}/jar</directory>
<outputDirectory></outputDirectory>
<excludes>
<exclude>lib/*.jar</exclude>
</excludes>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
複制
運作maven的package後,會進行編譯和打包,按照上述的配置會多産生一個
testProject-bin.zip
檔案
或者直接運作plugins-assembly下的
assembly:single
,這樣項目不會重新編譯,隻會将相應的檔案按照上述配置打包成
testProject-bin.zip
檔案
testProject-bin.zip檔案解壓後的目錄結構:
- testProject-bin.zip
– testProject
– -- config
– -- – project.config
– -- – project2.config
– -- lib
– -- – log4j-core-2.8.2.jar
– -- – mybatis-3.2.3.jar
– -- – …
– -- testProject.jar
– -- log4j2.xml
下面對上述簡單介紹一下:
id:添加到打封包件名的辨別符,用來做字尾;例如bin,格式為 ${fileName}-bin
formats:是assembly插件支援的打封包件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同時定義多個format;如果按上面的配置,生成的檔案就是${fileName}-bin.zip。
dependencySets/dependencySet
設定工程依賴檔案在打包時的屬性。也與fileSets大緻相同,不過還有兩個特殊的配置:
- unpack:布爾值,false表示将依賴以原來的JAR形式打包,true則表示将依賴解成*.class檔案的目錄結構打包。
- scope:表示符合哪個作用範圍的依賴會被打包進去。compile與provided都不用管,一般是寫runtime。
fileSets/fileSet
fileSet用來設定一組檔案在打包時的屬性
- directory:源目錄的路徑
- includes/excludes:設定包含或排除哪些檔案,支援通配符
- fileMode:指定該目錄下的檔案屬性,采用Unix八進制描述法,預設值是0644
- outputDirectory:生成目錄的路徑
files/file
與fileSets大緻相同,不過是指定單個檔案,還可以通過destName屬性來設定與源檔案不同的名稱
參考:官網: assembly插件官網介紹
如果轉載此博文,請附上本文連結,謝謝合作~ : https://liyangyang.blog.csdn.net/
如果感覺這篇文章對您有所幫助,請點選一下“喜歡”或者“關注”部落客,您的喜歡和關注将是我前進的最大動力!