Maven Filter与Profile隔离生产环境与开发环境

简介: Maven Filter与Profile隔离生产环境与开发环境在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的是另外一套,生产环境要求是最严格的。

Maven Filter与Profile隔离生产环境与开发环境

在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的是另外一套,生产环境要求是最严格的。

不同环境,所需要的服务器地址,数据库,缓存,配置中心等配置一般不同,如果每次切换环境都要手动修改,那就太麻烦了,好在使用Maven可以帮我们做这些事情。

介绍

  • Filter: 过滤,一般配合maven resource插件使用,可以替换maven资源目录下的文本文件中变量为我们设置的值,变量使用${}包起来。
  • Profile: 侧面,可以理解为某个角度,盲人摸象角度不同得出的结论也不同,配置不同的profile,就像从不同的角度看待一个东西,得出的结果不一样。在开发中指:“环境”

案例

Filter的使用
  1. 新建一个maven项目,现在IDE新建项目步骤都非常简单

  2. 在resource目录下新建一个任意文件,我们新建文件名为 application.properties文件,内容只有一行

    app.name=${maven.app.name}
    
  3. 在main目录下新建filters目录,然后新建一个dev.properties文件,里面也只有一行内容,如下:

    maven.app.name=aihe-dev
    
  4. 配置pom.xml,编译部分如下:

        <build>
            <filters>
                <!-- 指定过滤变量的位置 -->
                <filter>src/main/filters/dev.properties</filter>
            </filters>
            <plugins>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <!-- 使用默认的变量标记方法即${*} -->
                        <useDefaultDelimiters>true</useDefaultDelimiters>
                    </configuration>
                </plugin>
            </plugins>
    
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <!-- 启用过滤 -->
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    
    
  5. 现在的目录结构如下:

img_a27dfc5b0709f521bc9bb11e97edef9a.png
image.png
  1. 编译运行查看效果。

    mavn clean compile
    
img_7ad9266cad83d8767dc93fdcdbee60c9.png
image.png
profile使用
  1. 上面我们可以看到,filter是生效的,但是如果只是这样用,那么功能太简单了点,所以还要加上profile.
  2. 修改pom.xml,并且添加profile,我们配置了两个profile,一个dev默认是激活状态,一个pro
    <build>
        <filters>
            <!-- 指定过滤变量的位置 -->
            <filter>src/main/filters/${env}.properties</filter>
        </filters>
        <!-- ...与刚才的内容相同 -->
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

        <profile>
            <id>pro</id>
            <properties>
                <env>pro</env>
            </properties>
        </profile>
    </profiles>

  1. 添加pro.properties,key和dev.properties中的key相同,内容如下:

    maven.app.name=aihe-pro
    
  2. 运行查看效果,maven命令行的-P参数指定使用profile

// 指定profile为pro时候,可以看到application.properties文件中的内容为maven.app.name=aihe-pro
mvn clean compile -P pro

//profile为dev的时候,文件中的内容为maven.app.name=aihe-dev
mvn clean compile -P dev

到这一步基本完事,在实际开发中涉及的环境比较多就多配置几个,这是当前项目配置的环境,好几个


img_56dd9c2726115f53a35993c369abbd57.png
image.png

结束

maven作为常用的工程化管理工具,常见的开发功能还是有必要掌握的

参考

目录
相关文章
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
203 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
3月前
|
Java Maven Docker
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
125 0
|
6月前
|
Java Maven Spring
94分布式电商项目 - Maven Profile切换注册中心连接配置
94分布式电商项目 - Maven Profile切换注册中心连接配置
27 0
|
6月前
|
Java 数据库连接 Maven
93分布式电商项目 - Maven Profile切换数据库连接配置
93分布式电商项目 - Maven Profile切换数据库连接配置
37 0
|
6月前
|
Java 测试技术 Maven
92分布式电商项目 - Maven Profile
92分布式电商项目 - Maven Profile
29 0
|
Dubbo Java 测试技术
技术汇总:第十章:Maven Profile动态选择配置文件
技术汇总:第十章:Maven Profile动态选择配置文件
416 0
|
Java Maven
【maven教程】使用Maven搭建Struts2框架的开发环境
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven的主要目标是希望开发人员能在最短的时间内理解开发的完整状态。为了达到这个目标,Maven在下面几个方面做出了努力:简化构建过程、统一构建体系、提供高质量的项目信息、提供开发的最佳实践指南、实现透明的向新特性的迁移、简化构建过程。使用Maven不须要知道一些潜在的或底层的机制,Maven屏蔽了非常多细节。
417 0
【maven教程】使用Maven搭建Struts2框架的开发环境
|
JavaScript Java 关系型数据库
Mac不会用?玩转brew,部署web开发环境【jdk、git、msyql、maven、node】全家桶,前后端覆盖
Mac不会用?玩转brew,部署web开发环境【jdk、git、msyql、maven、node】全家桶,前后端覆盖
913 0
Mac不会用?玩转brew,部署web开发环境【jdk、git、msyql、maven、node】全家桶,前后端覆盖
|
IDE Java Go
开发环境中使用Maven|学习笔记
快速学习开发环境中使用Maven
开发环境中使用Maven|学习笔记
|
IDE Java Maven
IDEA+Maven+tomcat7-maven-plugin配置开发环境
IDEA+Maven+tomcat7-maven-plugin配置开发环境
542 0
IDEA+Maven+tomcat7-maven-plugin配置开发环境

热门文章

最新文章

推荐镜像

更多