美文网首页程序猿阵线联盟-汇总各类技术干货技术干货
Maven Filter与Profile隔离生产环境与开发环境

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

作者: Real_man | 来源:发表于2018-09-25 20:56 被阅读6次

    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. 现在的目录结构如下:

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

      mavn clean compile
      
    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
    

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


    image.png

    结束

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

    参考

    相关文章

      网友评论

        本文标题:Maven Filter与Profile隔离生产环境与开发环境

        本文链接:https://www.haomeiwen.com/subject/qiqroftx.html