项目多环境切换——Maven Profile

在开发过程中,配置文件是必不可少的,比如:spring-mvc.xml,jdbc.propertiesd,等等!而且重项目开始到项目上线,必须经过重重环境的测试,这时我们每次部署都要去编辑配置文件中的某些配置项比如,数据库的地址啊,缓存地址啊,等等,太麻烦了,使用Maven Profile 指定配置文件打包,完美解决问题!

我是在原有的项目下进行添加的,因此文章也是在原有项目的基础上写滴!

前言

我手中的项目是maven+ssm架构的,配置文件如图所示!

额!不要吐槽!我也不知道为啥当初开发的人不好好地分一下,直接放在这个地方,看好结构,配置文件在resource资源文件夹下。

一、配置profile节点

在 pom.xml 文件中添加如下代码(与dependencies元素同级)

<profiles>
        <profile>
            <!-- 开发环境 -->
            <id>development</id>
            <properties>
                <environment>development</environment> <!-- 节点名字environment随意 用于下方指定 -->
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault> <!-- 默认激活该profile节点-->
            </activation>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <environment>test</environment>
            </properties>
        </profile>
        <profile>
            <!-- 预演环境 -->
            <id>preview</id>
            <properties>
                <environment>preview</environment>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>production</id>
            <properties>
                <environment>production</environment>
            </properties>
        </profile>
    </profiles>

二、添加与profile配置相对应的配置文件目录

在resources目录下创建environment目录 在此目录下分别创建profile配置中对应的目录

之后将配置文件分别弄到各个环境文件夹中

三、配置resource节点

<!-- 设置配置文件打包以及输出路径 -->
<resources>
    <resource>
        <directory>src/main/resources</directory> <!--打包时包含src/main/resources目录下所有文件以及子目录 -->
        <excludes> <!--打包时排除节点-->
            <exclude>environment/development/*</exclude> <!--打包时排除src/main/resources/environment/development下所有-->
            <exclude>environment/test/*</exclude><!-- 同上 -->
            <exclude>environment/preview/*</exclude><!-- 同上 -->
            <exclude>environment/production/**</exclude><!-- 同上 -->
        </excludes>
    </resource>
    <resource>
        <!-- 打包时包含src/main/resources/environment/${environment}下所有文件,environment变量值和上面随意写的一样 -->
        <directory>src/main/resources/environment/${environment}</directory>
        <targetPath></targetPath><!-- 打包文件输出位置 这里得说一下我这里什么都不写 位置就是上方directory节点中配置的路径 你们懂得!-->
    </resource>
</resources>

来个图!

对了,那个※号是表示排除的力度,一个※表示排除当前目录下文件,两个※表示当前目录下的文件夹和文件!

四、打包发布项目

更新maven配置,会发现idea右方maven选项栏中出现Profile配置

打完的包会在target目录中

指定环境打包命令:

mvn package -PTest (-p+环境名称 第一个要大写)

烦恼轻松解决!

原文发布于微信公众号 - 互扯程序(chat_routine)

原文发表时间:2018-11-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构师学习

日志: 分布式系统的核心日志的应用

最近这段时间一直在研究消息队列、文件系统、数据库等,慢慢的发现他们都有一个核心组件:日志.有时也叫write-ahead logs 、commit logs 或...

34870
来自专栏安恒信息

Apache Tomcat 安全漏洞预警

1 Apache Optionsbleed 漏洞跟进 2017年9月18日,Apache公告了HTTP OPTIONS方法内存泄露漏洞,代号“Optionsbl...

39270
来自专栏c#开发者

在 BizTalk Server 2004 SP2 中存档和清除 BizTalk 跟踪数据库

在 Biztalk Server 2004 SP2 中存档和清除 Biztalk 跟踪数据库 发布日期: 2006年09月19日 小结:本白皮书介绍如何配置 B...

36430
来自专栏PHP在线

web缓存的作用和类型

前言&摘要 这段时间的工作内容主要是为一个客户端类型的产品增加文档在线存储和文档在线预览相关特性。由于测试的同事比较细心和专业,发现了项目实现中一些效 率低下的...

35750
来自专栏我是攻城师

Nodejs笔记(一)

32670
来自专栏编程

Python让你自己做一个软件,自己开个聊天室,厉害吧!

内容 知识点 asyncore 、asynchat模块运用 环境 python 3.5 功能描绘 在本实验中,我们将实现一个简略的图形界面谈天系统。我们可以经...

32550
来自专栏H2Cloud

C++ FFLIB之FFRPC:多线程&多进程的scalability探索

摘要: 近来在完成通用的数据分析系统ffcount时,使用了ffrpc完成了事件源和service的通信。顺便对ffrpc进行了优化和精简,接口也更易用一些。在...

52730
来自专栏FreeBuf

[安全科普]你必须了解的session的本质

有一点我们必须承认,大多数web应用程序都离不开session的使用。这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制。 我们先简单的...

22870
来自专栏计算机视觉与深度学习基础

解决win7系统不支持16位实模式汇编程序DOS运行的问题

这学期学习了汇编,在自己电脑上发现,win7的dos不支持16位实模式。 对编程来说,不能运行程序是致命的。 在经过网上搜集资料后,得到一种解决办法--使用do...

25980
来自专栏hadoop学习笔记

超详细hadoop系统安装教程(附步骤)

在前几篇的文章中分别就虚拟系统安装、LINUX系统安装以及hadoop运行服务器的设置等内容写了详细的操作教程,本篇分享的是hadoop的下载安装步骤。

17030

扫码关注云+社区

领取腾讯云代金券