`

Maven <Profiles>定义不同环境的参数变量

 
阅读更多
应用场景

我们在开发的时候会遇到需要区分正式环境、测试环境、开发环境使用不同的参数,如数据库的用户名及密码等。这时可以用Spring 的PropertyPlaceholderConfigurer 来配置受环境影响的变量,这种使用多个配置文件的方式,但是我觉得这样不够灵活,所以就使用了maven的profiles 来实现,在打包的时候maven就会根据指定的配置参数写入文件。
配置方式分为两种,一种是全局配置即在.m2/conf/setting.xml 里面配置实现全局,一种是在项目中的pom.xml配置,这里我没有用到全局方式,就不详细介绍,我们主要介绍项目中配置方式。
实现

1.pom.xml配置

    <build>
        <!-- 配置使用变量的配置文件-->
        <filters>
            <filter>src/main/resources/application.properties</filter>
        </filters>
        <resources>
            <!--配置文件路径-->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    <profiles>
        <profile>
            <id>local</id>
            <properties>
                <pom.env>dev</pom.env>
                <pom.ver>1.2.4</pom.ver>
            </properties>
            <activation>
                <!--默认生效的配置组-->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <pom.env>dev</pom.env>
                <pom.ver>1.3.3</pom.ver>
            </properties>
        </profile>
        <profile>
            <id>pro</id>
            <properties>
                <pom.env>pro</pom.env>
                <pom.ver>1.3.5</pom.ver>
            </properties>
        </profile>
    </profiles>


2.application.properties配置

env=${pom.env}
ver=${pom.ver}


3.执行

执行的时候加上-P ${profile.id},使用默认的可以不加,我用的IDE自带的工具选择生效参数组,在Profiles里面选择参数组

mvn clean install -P local


4.总结

步骤如下:

pom.xml中添加、参数
EL表达式在配置文件中调用变量
执行是-P 制定参数

注意: 必须有下面的resources配置profiles才有效的
<build>
        <!-- 配置使用变量的配置文件-->
        <filters>
            <filter>src/main/resources/application.properties</filter>
        </filters>
        <resources>
            <!--配置文件路径-->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
分享到:
评论

相关推荐

    <<Maven权威指南>>+<<Maven in Action>> pdf扫描版丛书

    两本Maven基础入门讲解丛书,全面系统的介绍了Apache Maven的操作使用指南。&lt;&lt;Maven权威指南&gt;&gt;+&lt;&lt;Maven in Action&gt;&gt; pdf扫描版丛书

    Maven使用tomcat8-maven-plugin插件的详细教程

    &lt;groupId&gt;org.apache.tomcat.maven&lt;/groupId&gt; &lt;artifactId&gt;tomcat7-maven-plugin&lt;/artifactId&gt; &lt;version&gt;2.2&lt;/version&gt; &lt;/plugin&gt; 并没有找到tomcat8-maven-plugin的plugin,在Maven的中央仓库中根本就没有这个...

    <<Maven实战>>高清完整版pdf

    &lt;&lt;Maven实战&gt;&gt;高清完整版pdf,相信对大家使用Maven有很大的帮助

    maven 下载到 maven库下边的 gui.ava.html2image0.9 及jar 可以直接使用

    &lt;dependency&gt; &lt;groupId&gt;gui.ava&lt;/groupId&gt; &lt;artifactId&gt;html2image&lt;/artifactId&gt; &lt;version&gt;0.9&lt;/version&gt; &lt;/dependency&gt; maven 下载到 maven库下边的gui.ava.html2image0.9 及jar 可以直接使用,在 一些...

    maven 配置注意事项

    &lt;groupId&gt;org.apache.tomcat.maven&lt;/groupId&gt; &lt;artifactId&gt;tomcat7-maven-plugin&lt;/artifactId&gt; &lt;version&gt;2.2&lt;/version&gt; &lt;configuration&gt; &lt;url&gt;http://localhost/manager/text&lt;/url&gt;  &lt;path&gt;/icms&lt;/path&gt;  ...

    maven tomcat7改造后插件

    &lt;groupId&gt;org.apache.tomcat.maven&lt;/groupId&gt; &lt;artifactId&gt;tomcat7-maven-plugin&lt;/artifactId&gt; &lt;configuration&gt; &lt;path&gt;/&lt;/path&gt; &lt;port&gt;9001&lt;/port&gt; &lt;staticContextPath&gt;/img&lt;/staticContextPath&gt; ...

    apt-maven-plugin:Maven APT插件

    &lt;groupId&gt;com.mysema.maven&lt;/groupId&gt; &lt;artifactId&gt;apt-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.1.3&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;goals&gt; &lt;goal&gt;process&lt;/goal&gt; &lt;/goals&gt; &lt;config

    Maven换源配置文件settings.xml

    &lt;id&gt;aliyunmaven&lt;/id&gt; &lt;mirrorOf&gt;*&lt;/mirrorOf&gt; &lt;name&gt;阿里云公共仓库&lt;/name&gt; &lt;url&gt;https://maven.aliyun.com/repository/public&lt;/url&gt; &lt;/mirror&gt; &lt;/mirrors&gt; &lt;repositorys&gt; &lt;repository&gt; &lt;id&gt;...

    maven中 引入jar报错:Missing artifact net.sf.json-lib:json-lib:jar:2.4

    &lt;dependency&gt; &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib&lt;/artifactId&gt; &lt;version&gt;2.4&lt;/version&gt; &lt;classifier&gt;jdk15&lt;/classifier&gt; &lt;/dependency&gt; 或者直接下载这个包

    kettle9.1编译后2020年6月份最新版本 jdk1.8以上(第1卷) data-integration.part1.rar

    &lt;profiles&gt; &lt;profile&gt; &lt;id&gt;pentaho&lt;/id&gt; &lt;activation&gt; &lt;activeByDefault&gt;true&lt;/activeByDefault&gt; &lt;/activation&gt; &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;pentaho-public&lt;/id&gt; &lt;name&gt;Pentaho Public&lt;/name&gt; &lt;url&gt;...

    kettle9.1编译后2020年6月份最新版本 jdk1.8以上(第3卷)data-integration.part3.rar

    &lt;profiles&gt; &lt;profile&gt; &lt;id&gt;pentaho&lt;/id&gt; &lt;activation&gt; &lt;activeByDefault&gt;true&lt;/activeByDefault&gt; &lt;/activation&gt; &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;pentaho-public&lt;/id&gt; &lt;name&gt;Pentaho Public&lt;/name&gt; &lt;url&gt;...

    kettle9.1编译后2020年6月份最新版本 jdk1.8以上(第2卷)data-integration.part2.rar

    &lt;profiles&gt; &lt;profile&gt; &lt;id&gt;pentaho&lt;/id&gt; &lt;activation&gt; &lt;activeByDefault&gt;true&lt;/activeByDefault&gt; &lt;/activation&gt; &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;pentaho-public&lt;/id&gt; &lt;name&gt;Pentaho Public&lt;/name&gt; &lt;url&gt;...

    使用Maven管理进行多模块开发案例

    &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;configuration&gt; &lt;source&gt;1.6&lt;/source&gt; &lt;target&gt;1.6&lt;/target&gt; &lt;encoding&gt;UTF-8&lt;/encoding&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; ...

    install、clean、add addtional source工程和maven仓库8.1

    &lt;artifactId&gt;build-helper-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.5&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;add-source&lt;/id&gt; &lt;phase&gt;generate-sources&lt;/phase&gt; &lt;goals&gt; ...

    maven-shade-plugin-3.1.0.jar

    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-shade-plugin&lt;/artifactId&gt; &lt;version&gt;3.1.0&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;phase&gt;package&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;shade&lt;/goal&gt; &lt;/...

    spring和mybatis结合的maven工程

    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;com.maven.test&lt;/groupId&gt; &lt;artifactId&gt;springMybaits&lt;/artifactId&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;jar&lt;/packaging&gt; &lt;name&gt;springMybaits&lt;/name...

    ssm黑马旅游整合最终版2018

    &lt;groupId&gt;org.apache.tomcat.maven&lt;/groupId&gt; &lt;artifactId&gt;tomcat7-maven-plugin&lt;/artifactId&gt; &lt;configuration&gt; &lt;port&gt;8080&lt;/port&gt; &lt;path&gt;/&lt;/path&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/...

    maven 配置详解

    &lt;parent&gt; &lt;!--被继承的父项目的构件标识符 --&gt; &lt;artifactId /&gt; &lt;!--被继承的父项目的全球唯一标识符 --&gt; &lt;groupId /&gt; &lt;!--被继承的父项目的版本 --&gt; &lt;version /&gt; &lt;!-- 父项目的pom.xml...

    mvn-examples-1.0&Maven;权威指南中文版

    &lt;module&gt;ch03-simple&lt;/module&gt; &lt;module&gt;ch04-custom&lt;/module&gt; &lt;module&gt;ch05-simple-web&lt;/module&gt; &lt;module&gt;ch06-multi&lt;/module&gt; &lt;module&gt;ch07-multi-spring&lt;/module&gt; &lt;module&gt;ch08-optimize&lt;/module&gt; &lt;module&gt;...

    axis2 调用webservice 例子

    &lt;groupId&gt;org.apache.axis2&lt;/groupId&gt; &lt;artifactId&gt;axis2&lt;/artifactId&gt; &lt;version&gt;1.6.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.axis2&lt;/groupId&gt; &lt;artifactId&gt;axis2-...

Global site tag (gtag.js) - Google Analytics