文档章节

Maven Assembly构建发布包

ksfzhaohui
 ksfzhaohui
发布于 2016/06/01 14:54
字数 849
阅读 189
收藏 3

       maven的出现更近一步的加深了大家对模块化开发的热忱,如何更好的打包,可以让我们工作更加高效,maven提供的Assembly插件能帮你构建一个完整的发布包,下面基于一个实例来发布一个zip包。

gserver项目的名称,包含如下模块:

服务:
gserver-gate:网关服务器
gserver-logic:逻辑服务器

公用类:
gserver-core:核心类
gserver-redis:redis缓存管理
gserver-services:逻辑类
gserver-db:mysql数据库管理

打包:
gserver-distribute:打包程序,路径/target目录下

整个项目包含了2个进程以及4个模块,4个公共模块分别给2个进程使用;

整个打包的思路就是:每个模块先各自独立打包,然后通过另外一个模块进行汇总

我们需要提供了一个专门打包的模块,既项目中出现的gserver-distribute模块,它本身是一个空模块,里面只是提供了Assembly插件需要的xml文件,当然也可能提供一些公共的配置文件。

既然gserver-distribute是一个汇总模块,所有要保证gserver-distribute是最后一个执行模块,如下所示:

<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进行配置

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)

© 著作权归作者所有

ksfzhaohui

ksfzhaohui

粉丝 401
博文 149
码字总数 213996
作品 3
南京
高级程序员
私信 提问
补习系列-springboot-使用assembly进行项目打包

目录 springboot-maven插件 1. 项目打包Jar 2. 项目完整构建 3. 本地包依赖 参考文档 springboot-maven插件 springboot-maven插件 repackage目标声明 1. 项目打包Jar pom定义 关于内置变量 ...

美码师
2018/07/07
0
0
maven 自定义打包

“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当...

Oscarfff
2016/09/08
113
0
Maven实战(九)——打包的技巧

“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当...

Oscarfff
2016/02/13
88
0
maven-assembly-plugin插件的使用方法

一. Assembly 是什么意思? 二. maven-assembly-plugin是什么? 1 三. maven-assembly-plugin插件的作用?   摘自官网:http://maven.apache.org/plugins/maven-assembly-plugin/   英文...

吴伟祥
2018/10/11
476
0
使用maven插件构建项目安装包

因项目需要,需要在一开源项目上做二 次开发,对开发后的项目需要再构建出自己的安装包(如Linux下的.tar.gz,Windows下的.zip格式)。从网上搜索资料发现maven插件可以实现这个需求。现把已经...

Only_小白
2016/03/02
111
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录 java面试题(一)

1. JDK和JRE的区别 JDK是整个JAVA的核心,包括了Java运行环境JRE,一堆Java工具和Java基础的类库。通过JDK开发人员将源码 文件(java文件)编译成字节码文件(class文件)。 JRE是Java运行环境,...

Pole丶逐
22分钟前
5
0
springboot 部署到外部tomcat

入口类继承SpringBootServletInitializer 并重写protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)方法 如下 import org.springframework.boot.SpringApplic......

雷开你的门
28分钟前
3
0
hashCode和equals方法的关系

equals相等,hashcode必相等; hashCode()在哈希表中起作用,如HashSet、HashMap等。 当我们向哈希表(如HashSet、HashMap等)中添加对象object时,首先调用hashCode()方法计算object的哈希码,...

无名氏的程序员
32分钟前
2
0
技术分享 | MySQL 慢查询记录原理和内容解析

作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 源码版本:percona 5.7.14 本文为学习记录,可能有误请谅解,也提供了一些...

爱可生
41分钟前
3
0
elementui 树型节点

节点选择时,勾选节点。 提交给后端时,传递 this.$refs.menuTree.getCheckedKeys(); 半选父节点 getHalfCheckedKeys() 不需要提交。...

东东笔记
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部