Maven Assembly構建發佈包

       maven的出現更近一步的加深了你們對模塊化開發的熱忱,如何更好的打包,能夠讓咱們工做更加高效,maven提供的Assembly插件能幫你構建一個完整的發佈包,下面基於一個實例來發佈一個zip包。mysql

gserver項目的名稱,包含以下模塊:git

服務:
gserver-gate:網關服務器
gserver-logic:邏輯服務器

公用類:
gserver-core:核心類
gserver-redis:redis緩存管理
gserver-services:邏輯類
gserver-db:mysql數據庫管理

打包:
gserver-distribute:打包程序,路徑/target目錄下

整個項目包含了2個進程以及4個模塊,4個公共模塊分別給2個進程使用;github

整個打包的思路就是:每一個模塊先各自獨立打包,而後經過另一個模塊進行彙總redis

咱們須要提供了一個專門打包的模塊,既項目中出現的gserver-distribute模塊,它自己是一個空模塊,裏面只是提供了Assembly插件須要的xml文件,固然也可能提供一些公共的配置文件。sql

既然gserver-distribute是一個彙總模塊,全部要保證gserver-distribute是最後一個執行模塊,以下所示:shell

<modules>
	<module>gserver-core</module>
	<module>gserver-redis</module>
	<module>gserver-services</module>
	<module>gserver-gate</module>
	<module>gserver-logic</module>
	<module>gserver-db</module>
	<module>gserver-distribution</module>
</modules>

gserver-distribute出如今全部模塊的最下面;下面看一下gserver-distribute使用Assembly插件進行打包。數據庫

須要提供一個Assembly插件打包的配置文件:assembly.xml,而後再pom.xml進行配置apache

pom.xml配置使用插件以下:緩存

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-assembly-plugin</artifactId>
			<version>2.4</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>

下面再看一下assembly.xml配置文件:服務器

<assembly>
	<id>bin</id>
	<!-- 最終打包成一個用於發佈的zip文件 -->
	<formats>
		<format>zip</format>
	</formats>

	<!-- Adds dependencies to zip package under lib directory -->
	<dependencySets>
		<dependencySet>
			<!-- 不使用項目的artifact,第三方jar不要解壓,打包進zip文件的lib目錄 -->
			<useProjectArtifact>false</useProjectArtifact>
			<outputDirectory>lib</outputDirectory>
			<unpack>false</unpack>
			<!-- 排除指定的模塊 -->
			<excludes>  
                <exclude>com.gserver:gserver-logic</exclude>  
                <exclude>com.gserver:gserver-gate</exclude>  
            </excludes>  
		</dependencySet>
	</dependencySets>

	<fileSets>
		<!-- 把項目的腳本文件目錄( src/main/scripts )中的啓動腳本文件,打包進zip文件的跟目錄 -->
		<fileSet>
			<directory>../gserver-logic/shell</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>../gserver-gate/shell</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>../gserver-distribution/shell</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*</include>
			</includes>
		</fileSet>

		<fileSet>
			<directory>../gserver-logic/target</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>../gserver-gate/target</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
		</fileSet>

		<fileSet>
			<directory>../gserver-logic/logic-config</directory>
			<outputDirectory>logic-config</outputDirectory>
			<includes>
				<include>*</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>../gserver-gate/gate-config</directory>
			<outputDirectory>gate-config</outputDirectory>
			<includes>
				<include>*</include>
			</includes>
		</fileSet>
	</fileSets>
</assembly>

主要的設置大概就這些,更加詳細的:https://github.com/ksfzhaohui/gserver

整個包最後將打成一個zip包,固然還支持其餘不少格式,更多細節能夠去看Maven Assembly插件,這裏簡單介紹一下整個流程。

最後的zip包:gserver-distribution-0.0.1-SNAPSHOT-bin.zip,內部以下圖所示:

好了,這時候你能夠直接丟給客戶端,測試,策劃,讓他們一鍵啓服(all-startup.bat),一鍵停服(all-shutdown.bat)

相關文章
相關標籤/搜索