工程中免不了要經過maven打包。html
plugin | function | site |
maven-jar-plugin | maven 默認打包插件,用來建立 project jar | |
maven-shade-plugin | 用來打可執行包,executable(fat) jar | http://maven.apache.org/plugins/maven-shade-plugin/ |
maven-assembly-plugin | 支持定製化打包方式,例如,apache 項目的打包方式 | http://maven.apache.org/components/plugins/maven-assembly-plugin/ |
咱們主要打zip包,也就是使用maven-assembly-plugin。apache
maven assembly plugin容許用戶將依賴項、模塊、文檔和其餘文件聚合到一個可發佈的歸檔文件中。app
咱們能夠經過預製的描述文件打包文件,這些描述能夠處理常見操做,好比打包工程包和文件到一個zip文件裏面。eclipse
其實咱們也能夠自定義描述文件對依賴包,模塊,file-sets和單個文件更高級別的控制。maven
當前支持以下格式的文件打包:ui
假如你想把工程打包成一個uber-jar,能夠參考Maven Shade Plugin,不在本文討論範圍。url
使用maven assembly plugin的步驟以下:spa
首先給個官方的demo地址插件
爲了演示建立lib文件夾,放入隨意兩個jar包,建立資源目錄src/main/resources,並隨機放入一個文件。code
建立完以後目錄結構以下:
assembly.xml文件與pom.xml同級,內容以下:
描述文件格式請參考:http://maven.apache.org/components/plugins/maven-assembly-plugin/assembly.html
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <!-- 這個id會出如今zip包名稱的後面,zip的完整名是:pom.xml中的artifactId-version-id.zip --> <id>myzip</id> <!--支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war--> <formats> <format>zip</format> </formats> <!-- 這裏指定須要包含的其餘文件 --> <fileSets> <!--管理一組文件的存放位置--> <fileSet> <!--源目錄--> <directory>lib</directory> <!--放在哪--> <outputDirectory>lib</outputDirectory> </fileSet><fileSet> <directory>src/main/resources</directory> <outputDirectory>.</outputDirectory> </fileSet> </fileSets> <!-- 用來定製工程依賴 jar包的打包方式,依賴包的輸出路徑 --> <dependencySets> <dependencySet> <!--依賴jar包的輸出目錄--> <outputDirectory>lib</outputDirectory> <useProjectArtifact>false</useProjectArtifact> <scope>runtime</scope> </dependencySet> </dependencySets> </assembly>
<project 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/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lujiango</groupId> <artifactId>mvnassembly</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mvnassembly</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency> </dependencies> <build> <plugins> <!-- 打包插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2</version> <configuration> <descriptors> <!-- 指定描述文件 --> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
由於我使用的是eclipse,因此我直接經過右擊工程->Run As-> Maven clean,而後在右擊工程->Run As->Maven install,就能夠打包了。
打出的包爲mvnassembly-0.0.1-SNAPSHOT-myzip.zip,符合artifactId-version-id.zip命名格式。
打開zip包,是一個文件夾:
點擊進入:
進入lib目錄:
驗證是OK。