Maven的assembly外掛實現自定義打包部署(包含依賴jar包)
阿新 • • 發佈:2018-12-13
微服務必備
優點:
1、可以直接匯入依賴jar包
2、可以新增外掛啟動 .sh 檔案
3、外掛的配置以及微服務的統一打包方式
1.首先我們需要在pom.xml中配置maven的assembly外掛
<build> <plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <configuration> <classesDirectory>target/classes/</classesDirectory> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.xml</exclude> <exclude>**/*.txt</exclude> <exclude>**/*.list</exclude> </excludes> <archive> <addMavenDescriptor>false</addMavenDescriptor> </archive> </configuration> </plugin> <!-- 重點配置這個 assembly --><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <configuration> <descriptors> <descriptor>src/main/assembly.xml</descriptor> <!--配置描述檔案路徑--> </descriptors> </configuration> <executions> <execution> <!-- 配置執行器 --> <id>make-assembly</id> <phase>package</phase> <!-- 繫結到package生命週期階段上 --> <goals> <goal>single</goal> <!-- 只執行一次 --> </goals> </execution> </executions> </plugin> </plugins> </build>
2.接著我們在src/main/assembly檔案中配置assembly.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <assembly> <id>bin</id> <formats> <format>zip</format> <!--打包的檔案格式,也可以有:war zip tar.gz--> </formats> <dependencySets> <dependencySet> <useProjectArtifact>true</useProjectArtifact> <!-- zip 壓縮包下是否生成和專案名相同的根目錄--> <outputDirectory>lib</outputDirectory> <!-- 依賴目錄新增 生成的lib資料夾下放該專案的所有依賴以及該服務jar包 --> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/main/scripts</directory> <!-- 指令碼檔案用來開啟和關閉該服務,打包後直接放到根目錄下 server.sh 指令碼 --> <outputDirectory>/</outputDirectory> <includes> <include>*</include> </includes> </fileSet> <fileSet> <directory>src/main/resource</directory> <outputDirectory>/conf</outputDirectory> <includes> <include>*</include> </includes> </fileSet> </fileSets> </assembly>
其中,生成的lib資料夾下放該專案的所有依賴以及該服務jar包,src/main/bin資料夾下我們一般放個指令碼檔案用來開啟和關閉該服務,打包後直接放到根目錄下。生成的tar.gz檔案的名字為:maven-assembly-plugin外掛中配置的finalName-assembly.xml配置的id(若assembly中沒有指定id,則只有前半部分).
assembly的具體語法,請參見官網:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
這裡面涉及到如何生成可執行的jar包,具體參見:用Maven快速生成帶有依賴的可執行jar包
3. 打包目錄結構
maven打包時候,我們發現目錄下多了個.zip檔案,這個檔案則是我們部署專案需要的
.zip檔案下則有一個啟動指令碼、lib依賴jar包,conf配置檔案
4.打包方式思考
我們通過這種方式,每個微服務就是一個以服務名稱命名的zip檔案,解壓后里面lib目錄下是該服務生成的可執行jar包以及它所有的依賴jar包,我們直接執行根目錄下server.sh指令碼檔案來進行服務的開啟和關閉。風格統一,簡單明瞭!
啟動服務