文档章节

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

龍sky腾
 龍sky腾
发布于 2017/09/09 11:27
字数 455
阅读 258
收藏 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
东城
项目经理
私信 提问
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 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

没有更多内容

加载失败,请刷新页面

加载更多

存储过程知识点收集

记录下,以后要常用的问题 1、获取刚刚插入数据产生的ID SCOPE_IDENTITY 返回当前作用域的插入后产生的一条ID @@IDENTITY 返回当前表的最后一条ID

轻轻的往前走
19分钟前
1
0
elixir keyword和map的区别

┌──────────────┬────────────┬───────────────────────┐ │ Keyword List │ Map/Struct │ HashDict (deprec...

wmzsonic
21分钟前
2
0
解决bootstrap-table-fixed-columns.js显示列与隐藏列按钮切换表格不对齐

<table class="table-striped table-hasthead nowrap" id="tableTest1" data-search="true" data-show-columns="true" data-fixed-columns="true" data-fixed-number="3"></table> 含有dat......

tianyawhl
24分钟前
1
0
ES6 系列之 defineProperty 与 proxy

摘要: ## 前言 我们或多或少都听过“数据绑定”这个词,“数据绑定”的关键在于监听数据的变化,可是对于这样一个对象:`var obj = {value: 1}`,我们该怎么知道 obj 发生了改变呢? ## def...

阿里云官方博客
29分钟前
1
0
美团点评携手 PingCAP 开启新一代数据库深度实践之旅(9000 字长文 / 真实“踩坑”经历)

一、背景和现状 在美团,基于 MySQL 构建的传统关系型数据库服务已经难于支撑公司业务的爆发式增长,促使我们去探索更合理的数据存储方案和实践新的运维方式。随着近一两年来分布式数据库大放...

TiDB
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部