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)