文档章节

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

龍sky腾
 龍sky腾
发布于 2017/09/09 11:27
字数 455
阅读 218
收藏 29
点赞 0
评论 0

        在使用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
博文 38
码字总数 11418
作品 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实战(七)——常用Maven插件介绍(上)

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

有事没事
2016/09/21
6
0
maven打包相关插件总结(非web服务器运行环境)

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

Beaver_
2015/11/23
1K
0
Maven profile 自动激活 无效

描述:测试 maven-assembly-plugin 插件时,想根据环境自动激活 skipAssembly 属性,按照pom文件的类型, 如果packaging 为pom时,激活profile,否则不激活。以上是我的想法。 编写测试代码如...

wangjunjun2008
2013/06/27
611
0
使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖

前半部分转自:http://www.xuebuyuan.com/1500726.html 现在基本上都是采用maven来进行开发管理,我有一个需求是需要把通过maven管理的java工程打成可执行的jar包,这样也就是说必需把工程依...

独钓渔
2016/04/13
668
0
maven 问题总结

转载自: http://tianya23.blog.51cto.com/1081650/289363 参考:http://tianya23.blog.51cto.com/1081650/364072 http://tianya23.blog.51cto.com/1081650/386891 maven安装配置:http://b2......

猴子也疯狂
2016/08/19
0
0
Maven鸡毛蒜皮

maven坐标规划原则(项目命名规范) 使用groupId定义项目;使用artifactId定义模块 e.g 组织域名: zoo.com 项目名: cat模块名: dao 项目坐标: 使用此种规划可有效防止混淆,使项目结构清...

CasparLi
2016/08/29
23
0
Maven 插件介绍

maven-antrun-plugin http://maven.apache.org/plugins/maven-antrun-plugin/ maven-antrun-plugin能让用户在Maven项目中运行Ant任务。用户可以直接在该插件的配置以Ant的方式编写Target, ...

年少爱追梦
2016/10/07
8
0
maven pom.xml加载不同properties配置

1.pom.xml =========================== <!-- 不同的打包环境配置: test=开发/测试测试环境, product=生产环境; 命令行方式: mvn clean install -Dmaven.test.skip=true -Ptest 或 -Pproduc......

今幕明
2015/04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用axios.all处理并发请求

如果我们需用在两个接口同时完成后在执行一些逻辑,我们可以使用axios.all处理并发请求: function getUserAccount() { return axios.get('/user/12345');}function getUserPermissio...

JamesView
29分钟前
0
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
39分钟前
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
56分钟前
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
57分钟前
0
0
JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
今天
0
0
【一】Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
3
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部