Maven3種打包方式中maven-assembly-plugin的使用詳解
- maven-jar-plugin,默認(rèn)的打包插件,用來打普通的project JAR包;
- maven-shade-plugin,用來打可執(zhí)行JAR包,也就是所謂的fat JAR包;
- maven-assembly-plugin,支持自定義的打包結(jié)構(gòu),也可以定制依賴項等。
我們?nèi)粘J褂玫囊詍aven-assembly-plugin為最多,因為大數(shù)據(jù)項目中往往有很多shell腳本、SQL腳本、.properties及.xml配置項等,采用assembly插件可以讓輸出的結(jié)構(gòu)清晰而標(biāo)準(zhǔn)化。
要使用該插件,就在項目pom文件中加入以下內(nèi)容。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}<version>
<executions>
<execution>
<id>make-assembly</id>
<!-- 綁定到package生命周期 -->
<phase>package</phase>
<goals>
<!-- 只運行一次 -->
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 配置描述符文件 -->
<descriptor>src/main/assembly/assembly.xml</descriptor>
<!-- 也可以使用Maven預(yù)配置的描述符
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs> -->
</configuration>
</plugin>
</plugins>
</build>
assembly插件的打包方式是通過descriptor(描述符)來定義的。
Maven預(yù)先定義好的描述符有bin,src,project,jar-with-dependencies等。比較常用的是jar-with-dependencies,它是將所有外部依賴JAR都加入生成的JAR包中,比較傻瓜化。
但要真正達到自定義打包的效果,就需要自己寫描述符文件,格式為XML。下面是我們的項目中常用的一種配置。
<assembly>
<id>assembly</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/bin</directory>
<includes>
<include>*.sh</include>
</includes>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/conf</directory>
<outputDirectory>conf</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/sql</directory>
<includes>
<include>*.sql</include>
</includes>
<outputDirectory>sql</outputDirectory>
</fileSet>
<fileSet>
<directory>target/classes/</directory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
<include>*.txt</include>
</includes>
<outputDirectory>conf</outputDirectory>
</fileSet>
</fileSets>
<files>
<file>
<source>target/${project.artifactId}-${project.version}.jar</source>
<outputDirectory>.</outputDirectory>
</file>
</files>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<scope>runtime</scope>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
id與formats
formats是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war??梢酝瑫r定義多個format。
id則是添加到打包文件名的標(biāo)識符,用來做后綴。
也就是說,如果按上面的配置,生成的文件就是artifactId−{artifactId}-artifactId−{version}-assembly.tar.gz。
fileSets/fileSet
用來設(shè)置一組文件在打包時的屬性。
directory:源目錄的路徑。
includes/excludes:設(shè)定包含或排除哪些文件,支持通配符。
fileMode:指定該目錄下的文件屬性,采用Unix八進制描述法,默認(rèn)值是0644。
outputDirectory:生成目錄的路徑。
files/file
與fileSets大致相同,不過是指定單個文件,并且還可以通過destName屬性來設(shè)置與源文件不同的名稱。
dependencySets/dependencySet
用來設(shè)置工程依賴文件在打包時的屬性。也與fileSets大致相同,不過還有兩個特殊的配置:
unpack:布爾值,false表示將依賴以原來的JAR形式打包,true則表示將依賴解成*.class文件的目錄結(jié)構(gòu)打包。
scope:表示符合哪個作用范圍的依賴會被打包進去。compile與provided都不用管,一般是寫runtime。
按照以上配置打包好后,將.tar.gz文件上傳到服務(wù)器,解壓之后就會得到bin、conf、lib等規(guī)范化的目錄結(jié)構(gòu),十分方便。
參考
http://www.dhdzp.com/article/144979.htm
到此這篇關(guān)于Maven3種打包方式中maven-assembly-plugin的使用的文章就介紹到這了,更多相關(guān)Maven打包方式maven-assembly-plugin的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring如何實現(xiàn)輸出帶動態(tài)標(biāo)簽的日志
文章介紹了如何通過動態(tài)標(biāo)簽日志實現(xiàn),解決了部分業(yè)務(wù)代碼在多個模塊中調(diào)用時日志無法直觀看出來源的問題,主要通過ThreadLocal存儲業(yè)務(wù)標(biāo)簽,并在日志輸出時插入該標(biāo)簽,實現(xiàn)日志的動態(tài)標(biāo)簽功能,感興趣的朋友一起看看吧2024-12-12
SpringCloud中的openFeign調(diào)用服務(wù)并傳參的過程
服務(wù)和服務(wù)之間通信,不僅僅是調(diào)用,往往在調(diào)用過程中還伴隨著參數(shù)傳遞,接下來重點來看看OpenFeign在調(diào)用服務(wù)時如何傳遞參數(shù),感興趣的朋友一起看看吧2023-11-11
解決復(fù)制springboot項目后,啟動日志無顏色的問題
這篇文章主要介紹了解決復(fù)制springboot項目后,啟動日志無顏色的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Spring?invokeBeanFactoryPostProcessors方法刨析源碼
invokeBeanFactoryPostProcessors該方法會實例化所有BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的實例并且執(zhí)行postProcessBeanFactory與postProcessBeanDefinitionRegistry方法2023-01-01
MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案
本文主要介紹了MybatisPlus 插入或更新數(shù)據(jù)時自動填充更新數(shù)據(jù)解決方案,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
mybatis plus CU自動填充 和 軟刪除自動填充的實現(xiàn)方法
這篇文章主要介紹了mybatis plus CU自動填充 和 軟刪除自動填充的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07
構(gòu)建springboot自動生成mapper文件和dao接口項目的步驟和配置方法
這篇文章主要介紹了構(gòu)建springboot自動生成mapper文件和dao接口項目的步驟和配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05

