Maven打不同环境的包(排除了不需要的配置文件)

Maven打包时如何将配置文件和依赖的Jar包打到包外 <build> <resources> <!--指定src/main/resources资源要过滤--> <resource> <directory>src/main/resources</directory> ... 阅读详情

简介:

在开发中我们经常会根据不同的发布环境建立对应的配置文件,然后在打包的时候指定哪个文件生效。但是通常的做法是在application.yml中通过spring.profiles.active指定哪个文件激活,但是这样会把所有相关的配置文件都打入最后的部署包中,如果遇到非常保密的情况就很不合适了。这里我们会只将激活的文件打入包内,不相关的不会放入最后的部署包内。


操作:

<1> 建立对应的配置目录

这里先看一下我们的目录结构:
在这里插入图片描述
这里我在src/main/resources目录下建立了filters目录,里面建立了不同环境的目录,每个目录下有该环境对应的配置文件,文件名格式为application-xxx.yml。可以放置在不同目录,也可以命名成其他文件名,只要后边的配置与之对应即可。

<2> 修改maven的pom.xml配置

然后修改pom.xml文件,添加打包插件:

<properties>
    <package.env>dev</package.env>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <overwrite>true</overwrite>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources/filters/${package.env}</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <excludes>
                    <exclude>/filters/**</exclude>
                </excludes>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.3</version>
            <configuration>
                <packagingExcludes>WEB-INF/classes/filters/**</packagingExcludes>
            </configuration>
        </plugin>
    </plugins>
</build>
说明

这里定义了一个属性package.env用于区分不同环境

①maven-resources-plugin插件负责将src/main/resources/filters/${package.env}目录下的文件拷贝到${project.build.outputDirectory}目录下即打包后的输出目录中

②maven-jar-plugin在打成jar时生效,负责将打包后的目录中的filters目录删除,因为我们的filters目录是存放在src/main/resources下面的,默认该目录下的文件都会被打入部署包中,在这里我们通过exclude将其排除(这里要注意exclude中写的是相对于打包后的目录)

③maven-war-plugin插件与②中的maven-jar-plugin插件类似,只不过他是在打成war包时生效,同样需要注意packagingExcludes中的目录写法

<3> 修改配置

最后看看我们application.yml中的配置:
在这里插入图片描述

这里的package.env对应我们在pom.xml中配置的属性。

以后打不同环境的包,只需要将pom.xml中的package.env属性值修改成对应的目录即可
(比如我这里的dev、test)

<4> 测试

将pom.xml中的package.env属性改为dev,打包后的目录为:
在这里插入图片描述

将pom.xml中的package.env属性改为test,打包后的目录为:
在这里插入图片描述

Maven排除冲突依赖jar包 SequenceFile应该引入的是hadoop包下的,但是引入了flink包下的,因为flink里这个包版本较低,没有这个方法。所以报错。需要排除这个冲突的依赖。 1.找出冲突包位置 找到冲突包所在的父包。 打开idea的 Terminal 输入命令:mvn dependency:tree &amp;gt;&amp;gt; a.txt 打开生成和文件 根据文件显示,这个包在flink-java包下 2.... 阅读详情

相关推荐

maven打全量包-使用scope排除不需要打包的依赖

问题背景 生产环境缺少一些依赖,导致程序无法运行,打全量包耗时而且有jar包冲突的风险,需要一种方法只把生产环境缺少的依赖打进去,生产环境有的依赖就不打进去(需要排除) 解决方案 使用maven全量包插件和依赖的作用域(scope)属性可以实现指定依赖打进jar包 maven全量包插件配置如下: <build> <plugins> <plugin> <groupId>org.apa

MH_Tan的博客 2384

maven打包不包含配置文件

上面的配置是把resources下的配置文件不打进项目的jar包中,主要使用的是(排除),如果想把resources下的部分配置打进去,可以使用。打包后不包含配置文件。

m0_67393619的博客 4116

机器学习——Anaconda下载安装教程

Anaconda详细下载安装教程

2401_83693485的博客 3065

maven 排除配置文件打包_maven 打包排除配置文件

如果你想通过pom.xml文件的配置实现的话,你可以这样1、打jar包时过滤配置文件src/main/resources**/*true..............2、在plugins中添加插件org.apache.maven.pluginsmaven-resources-plugincopy-resourcespackagecopy-resourcesUTF-8${project.build.d...

weixin_39670849的博客 4912

从零构建:ESP32S3无线DAP-Link调试器的硬件与软件协同设计

本文详细介绍了基于ESP32S3的无线DAP-Link调试器的硬件与软件协同设计,涵盖关键元器件选型、无线通信协议优化、双核任务处理及低功耗调试方案。通过ESP-NOW协议实现低延迟无线调试,结合USB协议栈与双核协同,为嵌入式开发提供高效灵活的调试解决方案。

gitlab7runner的博客 858

【笔记】使用OrCAD对电路进行蒙特卡洛分析和最坏分析

使用OrCAD对电路进行蒙特卡洛分析和最坏分析

fang_dz999的博客 3147

SpringBoot Maven打包根据环境排除文件

Maven 打包根据环境排除文件

weixin_42568618的博客 3483

Hyper-V创建Ubuntu虚拟机设置固定IP

本文记录使用hyper-v创建ubuntu虚拟机,为虚拟设置固定IP且通过物理机可访问。

2622

IDEA打包Maven项目时,如何将配置文件排除

现在开发项目时,为了开发、测试方便,系统会有多套配置文件,当项目打包转测的时候,即使测试环境在启动项目时指定配置文件,仍然会存在各种问题,因此最好的办法就是在打包项目时,将这些配置文件全部排除在外。参考文档:https://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html。原文链接:https://blog.youkuaiyun.com/i1025700727/article/details/108266424。

today231126的博客 2420

Altera Quartus II FPGA固件烧录全攻略:从SOF到JIC的完整流程(附EPCQ128配置技巧)

本文详细介绍了使用Altera Quartus II工具链将FPGA固件从SOF文件转换为JIC文件并烧录到EPCQ128 Flash芯片的完整流程。内容涵盖环境配置、文件转换步骤、EPCQ128专用配置技巧以及常见问题解决方案,帮助工程师实现FPGA固件的flash固化,确保设计可靠运行。

weixin_30275415的博客 204

基于fMRI数据计算脑脊液(CSF)与全脑BOLD信号的时间耦合分析

BOLD和CSF信号有多相似CSF信号要延迟多少时间才能最匹配BOLD信号BOLD-CSF的互相关公式lag:时间延迟采样点数BOLD信号CSF信号延迟时间点对应的相关系数。

Rose9614的博客 2981

SpringBoot - 多环境打包与配置文件排除实践

在实际开发中,Spring Boot 项目通常需要适配不同的运行环境,例如开发环境、测试环境、生产环境等。这些环境下的配置可能包含敏感信息,例如数据库连接密码、API密钥等。因此,在项目打包时,我们不仅需要支持多环境配置,还要考虑如何排除敏感配置文件,以保证安全性。

小工匠 5713

生信人的一天~HIFI数据+HIC数据组装基因组

HIFI+HIC数据组装基因组!

qq_43337286的博客 9530

maven项目手动排除某个jar包

myeclipse排除maven项目中特定的jar依赖:1. 搜索该jar的位置2. 使用`exclusions`标签排除jar 1. 搜索该jar的位置 在项目中,由于某个公共的jar,可能在我们引入不同的依赖时,会存在版本冲突,或者我没有用到这个依赖,但是引入别的依赖时给自动引入了,我现在想把它给踢出来,原来使用的IDEA,可以很方便的找到依赖的版图,直接使用IDEA可直接排除,现在换了Myeclipse之后,突然发现,也是可以方便的排除依赖的jar包的。 比如我现在新项目里面由于引入了shiro-fr

种一棵树最好的时间是十年前,其次是现在。 1万+

手把手教你在ARM64架构下编译和部署Milvus:从环境搭建到Docker镜像制作全攻略

本文详细介绍了如何在ARM64架构下编译和部署Milvus,包括环境搭建、源码下载与编译、Docker镜像制作等关键步骤。通过本文的方法,您可以快速构建适用于ARM64设备的Milvus编译环境,并解决常见的编译错误。同时,还提供了基于Docker Compose的测试方法,帮助用户高效地完成向量数据库的部署与应用。这是一次深入探索开源AI工具的实用指南,为开发者在多种硬件架构上的创新应用提供了强有力的支持。

小盒子的博客 1266

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

maven打包排除指定文件(jar包)

在使用maven打包时,有些时候需要排除某些文件或者排除某些jar,不把这个文件和jar打入到war包里面 一、在项目的pom.xml文件里面添加如下配置: org.apache.maven.plugins maven-war-plugin 2.4

jsolo的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Maven 排除不需要打包的文件

在开发项目时,为了开发、测试方便,系统会有多套配置文件,当项目打包的时候,即使测试环境在启动项目时指定配置文件,仍然可能会存在各种问题,因此最好的办法就是在打包项目时,将这些配置文件全部排除在外。 官方文档中给出了解决方法。 官方参考文档:https://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html. <project> ... <build> <plugins&g

QiuHaoqian的博客 4494

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

maven springboot 分环境打包jar,根据不同环境生成不同脚本

背景 我的springboot 项目要部署到多个环境,每个环境的数据库等配置都不一样,我希望不同环境打包不同的jar包,jar包名根据环境区分,并且我的项目里写了启动的shell脚本,这个shell脚本的内容根据不同环境也会不一样。 需求 按不同环境的配置来打包 jar包名按不同环境来命令 jar包内不能包含别的环境的配置文件,(否则反编译jar包可以看到别的环境的配置,我们公司业务是一个城市一个环境,各个城市间的配置不希望泄露) 启动shell脚本中的内容会根据不同环境来修改脚本内的内容 实现 pom

我的博客 3324

如何排除掉maven引入的jar包里的某个类

如何排除掉maven引入的jar包里的某个类 我们知道可以使用 <exclude> 来排除掉引入的jar包所依赖的jar包,但是有时候某个类并不是它引入其他jar而导致的,是这个jar本身的,你如何排除呢? 总不能把自身这个jar去掉吧,因为这个jar的其他类还是有用的。 比如有如下两个GAV <dependencies> <dependency> <groupId>com.wyf.test</groupId&gt

w8y56f的专栏 2万+

springboot 工程 maven 打jar包排除classpath下的配置文件的配置说明

需求说明: 公司要求提供一个 消息发送接口,该接口实现RabbitMQ消息的发送,这个接口需要被打成jar包,被其他系统引用,但是mq的配置信息需要在外部系统配置,需要在外部系统的classpath下添加mq的连接配置信息。 所以在需要打成jar包的maven工程中,在打包时,将对应的配置文件排除掉即可 相关配置如下 在maven配置文件添加 <build> <resources> <resource> .

qq_37306041的博客 1396

maven引入父pom排除某些包_Maven 可选的依赖和依赖排除

简介这节主要讨论了可选的依赖排除功能。这将帮助用户理解它们是什么,怎么使用它们,它们是怎么工作的,和使用它们的最好的方式。同样也解释了为什么排除是在每个依赖的基础上,而不是在POM级别。可选的依赖当不可能把一个项目分裂成子模块(不管什么原因)的时候,我们可以使用可选的依赖。它的思想就是:在项目中一些依赖仅仅被某些功能使用,并且如果这个功能不被使用,这个依赖就不需要。理想情况下,根据核心的功能性项目...

weixin_39683025的博客 8560

Maven依赖jar包的排除和其他核心概念

Maven依赖jar包的排除和其他核心概念

han1725692339的博客 3528

maven 不同环境打包

    很多时候,项目会分为,本地环境(local),测试环境(dev),生产环境(product),此时给项目打包,就会很麻烦,因为配置文件不同比如数据库链接,文件地址等,所以打包的时候需要修改配置文件,maven这里提供了很便利的操作,通过配置文件和命令就可以分别打出来不同的war包,在不同的环境中使用; 一、项目中resource下面需要区分一下,如下图,在resource中新建 dev ...

既认准这条路,又何必在意要走多久 2738

maven 排除配置文件打包_Maven打包pom里面配置exclude 排除掉环境相关的配置文件...

Maven打包pom里面配置exclude 排除掉环境相关的配置文件有几种方式:1. 打包时,指定环境参数把环境的配置文件复制过去2. 不打包所有的环境相关的配置文件,直接由运维的人维护可以在上传war包前把配置给改了,用rar工具改里面的配置,但每次都改太麻烦第一次上面放有这个配置文件,后面打包时排除掉就可以了,上面的解压后就不会覆盖了我们公司就用2,后面打包时排除掉就可以了,上面的解压后就不会...

weixin_39654322的博客 1082

maven打war包和jar包及排除文件

一、目录结构 二、pom文件 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ht

Luck_ZZ的博客 1919
上一篇: SpringBoot中@ControllerAdvice结合@InitBinder、@ModelAttribute、@ExceptionHandler的使用
下一篇: Spring Boot 解决跨域问题的 3 种方案
淋雨一直走啊
博客等级 码龄11年 39粉丝 46原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值