插件名稱:maven-assembly-plugin
目前最新的版本:3.2.0
作用:該插件可以使用戶根據(jù)自己的需求自定義打包規(guī)則和打包類型
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>
<!-- 最終打包成一個用于發(fā)布的zip文件 -->
<formats>
<format>zip</format>
</formats>
<!-- 把依賴的jar包打包進(jìn)zip的lib目錄下-->
<dependencySets>
<dependencySet>
<!-- 不使用項(xiàng)目的artifact -->
<useProjectArtifact>false</useProjectArtifact>
<!-- 打包進(jìn)zip文件下的lib目錄中 -->
<outputDirectory>lib</outputDirectory>
<!-- 第三方j(luò)ar不要解壓 -->
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<!-- 文件配置 -->
<fileSets>
<!-- 把項(xiàng)目的配置文件抖剿,打包進(jìn)zip包的config目錄下 -->
<fileSet>
<!-- 配置項(xiàng)目中需要被打包的文件的存儲路徑 -->
<directory>${project.basedir}/src/main/resources/${env}</directory>
<outputDirectory>/config</outputDirectory>
<includes>
<!-- 可以指定單個文件 -->
<!--<include>project.config</include>-->
<!-- 可以直接指定所有文件 -->
<include>*.*</include>
</includes>
</fileSet>
<!-- 把項(xiàng)目的配置文件盅抚,打包進(jìn)zip包的根目錄下 -->
<fileSet>
<directory>${project.basedir}/src/main/resources/${env}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>scf*.xml</include>
</includes>
</fileSet>
<!-- 把項(xiàng)目自己編譯出來根目錄下的jar文件傻铣,打包進(jìn)zip文件的根目錄 -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- 把項(xiàng)目自己編譯出來的jar文件夾下的jar文件,去除第三方j(luò)ar吐葱,打包進(jìn)zip文件的根目錄 -->
<fileSet>
<directory>${project.build.directory}/jar</directory>
<outputDirectory></outputDirectory>
<excludes>
<exclude>lib/*.jar</exclude>
</excludes>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
運(yùn)行maven的package后秸仙,會進(jìn)行編譯和打包袋坑,按照上述的配置會多產(chǎn)生一個testProject-bin.zip
文件
或者直接運(yùn)行plugins-assembly下的assembly:single
,這樣項(xiàng)目不會重新編譯优幸,只會將相應(yīng)的文件按照上述配置打包成testProject-bin.zip
文件
testProject-bin.zip文件解壓后的目錄結(jié)構(gòu):
- 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:添加到打包文件名的標(biāo)識符吨拍,用來做后綴;例如<id>bin</id>网杆,格式為 ${fileName}-bin
formats:是assembly插件支持的打包文件格式羹饰,有zip、tar跛璧、tar.gz、tar.bz2新啼、jar追城、war≡镒玻可以同時定義多個format座柱;如果按上面的配置,生成的文件就是${fileName}-bin.zip物舒。
dependencySets/dependencySet
設(shè)置工程依賴文件在打包時的屬性色洞。也與fileSets大致相同,不過還有兩個特殊的配置:
- unpack:布爾值冠胯,false表示將依賴以原來的JAR形式打包火诸,true則表示將依賴解成*.class文件的目錄結(jié)構(gòu)打包。
- scope:表示符合哪個作用范圍的依賴會被打包進(jìn)去荠察。compile與provided都不用管置蜀,一般是寫runtime。
fileSets/fileSet
fileSet用來設(shè)置一組文件在打包時的屬性
- directory:源目錄的路徑
- includes/excludes:設(shè)定包含或排除哪些文件悉盆,支持通配符
- fileMode:指定該目錄下的文件屬性盯荤,采用Unix八進(jìn)制描述法,默認(rèn)值是0644
- outputDirectory:生成目錄的路徑
files/file
與fileSets大致相同焕盟,不過是指定單個文件秋秤,還可以通過destName屬性來設(shè)置與源文件不同的名稱
參考:官網(wǎng): assembly插件官網(wǎng)介紹
如果轉(zhuǎn)載此博文,請附上本文鏈接脚翘,謝謝合作~
如果感覺這篇文章對您有所幫助灼卢,請點(diǎn)擊一下“喜歡”或者“關(guān)注”博主,您的喜歡和關(guān)注將是我前進(jìn)的最大動力!