文档章节

maven插件assembly利用profiles打不同环境发布包

龍sky腾
 龍sky腾
发布于 2017/09/09 11:27
字数 455
阅读 284
收藏 29

        在使用spring boot开发的时候,会根据环境配置多个application.yml文件(dev,sit等到),在最后发布版本的时候不想把这些不用的配置文件打包到发布包中。在assembly插件的配置文件中也没有找到根据变量排除或加载指定文件的方法,于是就想到了配置多个assembly配置文件(每个配置文件根据环境排查不需要的配置文件),根据pom.xml中的profiles属性指定打包的assembly配置文件。具体的代码如下:

pom.xml中profiles属性配置:

	<profiles>
		<profile>
			<id>dev</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<profile.assembly.package.suffix>dev</profile.assembly.package.suffix>
			</properties>
		</profile>
		<profile>
			<id>sit</id>
			<properties>
				<profile.assembly.package.suffix>sit</profile.assembly.package.suffix>
			</properties>
		</profile>
	</profiles>

 

pom.xml中assembly插件的配置: (最简化配置)

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptors>
						<descriptor>src/assembly/package-${profile.assembly.package.suffix}.xml</descriptor>
					</descriptors>
					<finalName>${project.artifactId}-${project.version}</finalName>
				</configuration>
			</plugin>

 

assembly插件的配置文件:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
	<id>customer</id>
	<formats>
		<format>tar.gz</format>
	</formats>

	<fileSets>
		<fileSet>
			<directory>sbin</directory>
			<outputDirectory>/sbin</outputDirectory>
			<useDefaultExcludes>true</useDefaultExcludes>
			<excludes>
				<exclude>mvn_*</exclude>
				<exclude>shutdown.sh</exclude>
				<exclude>startup.sh</exclude>
				<exclude>assembly*</exclude>
			</excludes>
		</fileSet>
		<fileSet>
			<directory>target/classes</directory>
			<outputDirectory>/classes</outputDirectory>
			<excludes>
				<exclude>/com/**/xx/**</exclude>  <!-- 排除某个目录下的所有文件 -->
				<exclude>/com/**/xxxx/**</exclude>
				<exclude>/com/**/xxxxxxx.class</exclude> <!-- 排除某个文件 -->
				<exclude>/static/**</exclude>
				<exclude>/templates/**</exclude>
			</excludes>
			<useDefaultExcludes>true</useDefaultExcludes>
		</fileSet>
		<fileSet>
			<directory>logs</directory>
			<outputDirectory>/logs</outputDirectory>
			<excludes>
				<exclude>/*.log</exclude>
				<exclude>/backup/*.log</exclude>
			</excludes>
			<useDefaultExcludes>true</useDefaultExcludes>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<useProjectArtifact>false</useProjectArtifact>
			<outputDirectory>/lib</outputDirectory>
			<excludes> <!-- 排除不需要的依赖包 -->
				<exclude>org.springframework:spring-jdbc</exclude>
				<exclude>org.springframework.boot:spring-boot-starter-jdbc</exclude>
				<exclude>org.springframework.boot:spring-boot-starter-data-jpa</exclude>
				<exclude>org.springframework.boot:spring-boot-starter-redis</exclude>
				<exclude>org.springframework.data:spring-data-jpa</exclude>
				<exclude>org.hibernate.javax.persistence:hibernate-jpa-2.1-api</exclude>
			</excludes>
			<scope>runtime</scope>
		</dependencySet>
	</dependencySets>
</assembly>

 

执行命令:

mvn -f $Project_HOME/pom.xml clean assembly:assembly -DskipTests  #跳过测试

 

 

 

© 著作权归作者所有

共有 人打赏支持
龍sky腾
粉丝 7
博文 40
码字总数 11637
作品 0
东城
项目经理
私信 提问
geekidea/spring-boot-assembly

spring-boot-assembly 在spring boot项目中使用maven profiles和maven assembly插件根据不同环境打包成tar.gz或者zip 将spring boot项目中的配置文件提取到外部config目录中 将spring boot项...

geekidea
2018/12/15
0
0
Maven 快速指南(二)

使用指导 如何添加外部依赖jar包 在Maven工程中添加依赖jar包,很简单,只要在POM文件中引入对应的标签即可。 参考下例: 标签最常用的四个属性标签: :项目组织唯一的标识符,实际对应JAV...

静默虚空
2017/11/10
0
0
常用Maven插件介绍(上)

转自 : http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源...

long0404
2016/06/16
0
0
maven打包相关插件总结(非web服务器运行环境)

maven打包相关插件总结(非web服务器运行环境) 有时候,我们需要把一个maven项目打包成一个jar,并且把依赖的lib都打包到一个lib目录下,利用 java -Dxxx(设置环境变量等) -classpath(类...

Beaver_
2015/11/23
1K
0
Maven实战(七)——常用Maven插件介绍(上)

我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。进一步说,每个任务对应了一...

有事没事
2016/09/21
6
0

没有更多内容

加载失败,请刷新页面

加载更多

node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 在package.json中的scripts里添......

Chason-洪
6分钟前
0
0
Linux系统快速查找文件的技巧

Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用。 which which命令会在P...

Linux就该这么学
8分钟前
0
0
dotConnect for Oracle入门指南(八):通过OracleCommand类使用存储过程

【下载dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的...

电池盒
9分钟前
0
0
JavaScript是如何工作的:深入类和继承内部原理 + Babel和TypeScript 之间转换

摘要: 深入JS系列15。 原文:深入类和继承内部原理 + Babel和TypeScript 之间转换 作者:前端小智 Fundebug经授权转载,版权归原作者所有。 这是专门探索 JavaScript 及其所构建的组件的系列...

Fundebug
19分钟前
0
0
js 引用传值问题踩坑

先自测一下,答案在最下边。 <html><head><script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript">$(document).ready(function(){$("button......

S三少S
30分钟前
12
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部