maven-自定義打包maven-assembly-plugin插件
- 2020 年 3 月 16 日
- 筆記
插件名稱: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/
如果感覺這篇文章對您有所幫助,請點擊一下「喜歡」或者「關注」部落客,您的喜歡和關注將是我前進的最大動力!