1. 程式人生 > >Maven外掛之maven-assembly-plugin

Maven外掛之maven-assembly-plugin

使用Maven對Web專案進行打包,預設為war包;但有些時候,總是希望打成zip包(亦或其他壓縮包),maven-war-plugin外掛就無能為力了,這時就用到了maven-assembly-plugin外掛了,官方網址:

該外掛能打包成指定格式分發包,更重要的是能夠自定義包含/排除指定的目錄或檔案(遺留專案中,過濾配置檔案時,或者僅僅需要釋出圖片或者CSS/JS等指定型別檔案時,發揮作用)

該外掛使用如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-assembly-plugin</artifactId>
	<version>2.4</version>
	<configuration>
		<appendAssemblyId>false</appendAssemblyId>
		<descriptors>
			<descriptor>${basedir}/assembly.xml</descriptor> <!-- Assembly 描述符檔案 -->
			<!-- <descriptor>src/main/assembly/assembly.xml</descriptor> -->
		</descriptors>
	</configuration>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>
		</execution>
	</executions>
</plugin>
如上所示,繫結到package階段,自動打包;需要指定一個Assembly描述符檔案,該檔案指定了打包格式,包含的檔案/過濾的檔案等資訊,可以同時指定多個描述符檔案,打包成不同的格式;

以下是assembly.xml檔案內容(該內容表示,打包時,排除WEB-INF/lib目錄下的所有檔案):

<assembly xmlns="http://maven.apache.org/POM/4.0.0"
		  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
	<id>full</id>
	<formats>
		<format>zip</format> <!--打包檔案格式-->
	</formats>
	<includeBaseDirectory>true</includeBaseDirectory>
	<fileSets> 
		<fileSet>
			<outputDirectory>/</outputDirectory>
			<directory>WebRoot</directory>
			<includes>
				<include>**/*</include>
			</includes>
			<excludes>
				<exclude>WEB-INF/lib/*</exclude>
			</excludes>
		</fileSet>
	</fileSets>
</assembly>
如此即可。

細心的朋友也許會發現,如果同時管理多個Web專案,那麼就要拷貝多個描述符檔案到每一個專案中,重複的勞動;其實我更想說的是,假如管理著十幾個甚至幾十個Web專案(本人就同時修改十幾個Web專案),而如上所述的重複勞動,仍然不厭其煩的做完了,突然有一天,領導說,打zip包時,需要在排除/新增某某檔案,剩下的就不用我多說了吧,唉.....

下面再介紹另外一種指定描述符檔案的做法(該做法應算作最佳實踐):

建立一個Java專案,該專案中僅僅有描述符檔案,打包成jar檔案,部署到私服中;如下圖所示:


有一點要求:所有的描述符檔案都必須放到assemblies資料夾下面,參考:

專案中使用assembly外掛如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-assembly-plugin</artifactId>
	<version>2.4</version>
	<dependencies>
		<dependency>
			<groupId>com.travelsky.tdp.pkgstock</groupId>
			<artifactId>stock-assembly-descriptor</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<ignoreMissingDescriptor>true</ignoreMissingDescriptor>
		<descriptorRefs>
			<descriptorRef>zipAll</descriptorRef>
			<descriptorRef>zipFilterConf</descriptorRef>
			<descriptorRef>zipJsCssOnly</descriptorRef>
			<descriptorRef>zipPicOnly</descriptorRef>
		</descriptorRefs>
	</configuration>
</plugin>
外掛中增加對描述符jar的依賴,同時指定需要使用的描述符檔案(無需新增.xml字尾);

如此使用,可在多個Web專案中共享同一份打包描述符檔案,也更具有可擴充套件性,更好維護。

VPN可參考:

http://blog.csdn.NET/wangjunjun2008/article/details/53883932

相關推薦

Maven外掛maven-assembly-plugin

使用Maven對Web專案進行打包,預設為war包;但有些時候,總是希望打成zip包(亦或其他壓縮包),maven-war-plugin外掛就無能為力了,這時就用到了maven-assembly-plugin外掛了,官方網址: 該外掛能打包成指定格式分發包,更重要的是能夠

maven外掛mavenmaven-surefire-plugin

1.maven-surefire-plugin是個什麼鬼? 如果你執行過 mvn test 或者執行其他maven命令時跑了測試用例,你就已經用過 maven-surefire-plugin 了。 maven-surefire-plugin 是maven裡執行測試用例的

Maven 外掛 maven-antrun-plugin

雖然Maven已經代替Ant,成為Java 工業領域事實上的構建標準.但在某些情況下,如果可以用Ant命令,還是很方便的. 藉助 maven-antrun-plugin 外掛,可以在Maven執行時,額外執行Ant指令碼. 打包完成後,把構建結果複製

Maven外掛maven-resources-plugin

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

maven外掛tomcat7-maven-plugin

tomcat7-maven-plugin外掛的pom.xml依賴為:   <dependency> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomc

Maven 外掛 docker-maven-plugin 的使用

目錄 docker-maven-plugin 介紹 環境、軟體準備 Demo 示例 配置 DOCKER_HOST 示例構建映象 指定構建資訊到 POM 中構建 使用 Dockerfile 構建 使用命令 繫結 Docker 命令到 Maven各個階段 使

maven外掛build-helper-maven-plugin

Maven預設只允許指定一個主Java程式碼目錄和一個測試Java程式碼目錄。 雖然這其實是個應當儘量遵守的約定,但偶爾你還是會希望能夠指定多個原始碼目錄(例如為了應對遺留專案),build-help

開發自己的Maven外掛三 使用外掛

                好,現在建立另一個Maven專案來使用第二篇建立的plugin.注意還是通過私服獲取。pom.xml配置如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2

Maven外掛mybatis-generator(mybatis自動生成實體程式碼的外掛)

        3.1 配置 1在pom.xml中做兩處配置 1.1配置dependency    要使用generator外掛自動生成相關檔案,需要引入mybatis-generator-core這個包,在<dependencys>中加入

maven 外掛 AutoConfig 工具使用筆記

AutoConfig 是一款 maven 外掛,主要用於 Maven 專案打包使用。在我們的工作中,會將自己寫的程式碼打成 jar 包或者 war 包釋出到各種環境上。一般地,不用的環境所使用的資料庫、快取的配置是不同的。我們完全可以手工修改不用環境的配置,當然

Maven外掛wagon-maven-plugin自動化部署

檔案上傳到伺服器 Maven專案可使用mvn package指令打包,打包完成後包位於target目錄下,要想在遠端伺服器上部署,首先要將包上傳到伺服器。 在專案的pom.xml中配置wagon-maven-plugin外掛: 123456789101112131415

maven外掛maven-surefire-plugin生成單元測試報告單(.html)

在pom.xml新增外掛: <build> <finalName>javawebdemo</finalName> <plu

Maven外掛繫結階段

開發十年,就只剩下這套架構體系了! >>>   

maven基礎教程(maven視訊)maven快速入門2

maven免費視訊地址 maven入門 settings.xml和倉庫 $user.home/.m2/repository/settings.xml 為使用者範圍的配置檔案 $M2_HOME/conf/settings.xml 為全

自定義Maven Archetype maven-archetype-archetype

nat sna type utf 過程 分享 圖片 jdb 避免 Maven自身提供了許多Archetype來方便用戶創建Project,但是每個團隊都可能會有一些常用的文件或配置,為了避免在創建project時重復的拷貝和修改,我們通過自定義Archetype來規範顯得還

使用maven-assembly-plugin外掛打包

在pom.xml中配置 <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupI

Maven外掛系列spring-boot-maven-plugin Maven外掛系列spring-boot-maven-plugin

Maven外掛系列之spring-boot-maven-plugin Spring Boot的Maven外掛(Spring Boot Maven plugin)能夠以Maven的方式為應用提供Spring Boot的支援,即為Spring Boot應用提供了執行Maven操作的可能。Spring

pom檔案中maven-assembly-plugin外掛學習

一、使用場景 如果專案是微服務架構,可能用到這個外掛的概率比較高,平時普通的專案不需要這樣的實現方式。 如果專案內的一部分通用功能,不需要挨個引用,則需要將通用功能部分達成jar包。 二、Maven-assembly-plugin作用 1、作用:要想將寫的程式

maven外掛介紹tomcat7-maven-plugin

tomcat7-maven-plugin外掛的pom.xml依賴為: <dependency> <groupId>org.apache.tomcat.maven</groupId> <artifactId>

使用maven-assembly-plugin外掛,將maven管理的遠端和本地依賴jar包打入可執行jar包

最近在修改一個小工具,原來的做法是把依賴包都下載到本地目錄,打包時候使用fatjar打包整個專案依賴;現在修改為maven管理依賴包,使用maven-assembly-plugin外掛打包;如果依賴包全部是遠端預設的依賴配置,這樣沒有問題;但裡面有些是自己實現的本地依賴,這個