您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了Maven中如何使用maven-assembly-plugin,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
我們日常使用的以maven-assembly-plugin為最多,因為大數據項目中往往有很多shell腳本、SQL腳本、.properties及.xml配置項等,采用assembly插件可以讓輸出的結構清晰而標準化。
要使用該插件,就在項目pom文件中加入以下內容。
<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預配置的描述符 <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> --> </configuration> </plugin> </plugins> </build>
assembly插件的打包方式是通過descriptor(描述符)來定義的。
Maven預先定義好的描述符有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。可以同時定義多個format。
id則是添加到打包文件名的標識符,用來做后綴。
也就是說,如果按上面的配置,生成的文件就是artifactId−{artifactId}-artifactId−{version}-assembly.tar.gz。
fileSets/fileSet
用來設置一組文件在打包時的屬性。
directory:源目錄的路徑。
includes/excludes:設定包含或排除哪些文件,支持通配符。
fileMode:指定該目錄下的文件屬性,采用Unix八進制描述法,默認值是0644。
outputDirectory:生成目錄的路徑。
files/file
與fileSets大致相同,不過是指定單個文件,并且還可以通過destName屬性來設置與源文件不同的名稱。
dependencySets/dependencySet
用來設置工程依賴文件在打包時的屬性。也與fileSets大致相同,不過還有兩個特殊的配置:
unpack:布爾值,false表示將依賴以原來的JAR形式打包,true則表示將依賴解成*.class文件的目錄結構打包。
scope:表示符合哪個作用范圍的依賴會被打包進去。compile與provided都不用管,一般是寫runtime。
按照以上配置打包好后,將.tar.gz文件上傳到服務器,解壓之后就會得到bin、conf、lib等規范化的目錄結構,十分方便。
以上就是關于Maven中如何使用maven-assembly-plugin的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。