pom.xml使用多套环境及变量获取

来源:互联网 发布:单片机做的毕业论文 编辑:程序博客网 时间:2024/06/03 21:31

一般来说,开发、测试、生产的环境都不一样,反复修改配置文件比较麻烦,还容易出错,项目在pom.xml文件中使用了profiles属性,配置了多套环境,有两个比较关键的问题

  • 以下是pom.xml文件中相关代码
    <profiles>        <profile>            <id>dev</id>            <activation>                <activeByDefault>true</activeByDefault>            </activation>            <properties>      <jdbc.url>jdbc:mysql://127.0.0.1:3306/test</jdbc.url>                <jdbc.username>test</jdbc.username>                <jdbc.password>test</jdbc.password>                <redis.nodes>127.0.0.1:9000</redis.nodes>            </properties>        </profile>        <profile>            <id>sa</id>            <activation>                <activeByDefault>false</activeByDefault>            </activation>            <properties>                <jdbc.url>#{jdbc.url}</jdbc.url>                <jdbc.username>#{jdbc.username}</jdbc.username>                <jdbc.password>#{jdbc.password}</jdbc.password>                <redis.nodes>#{redis.nodes}</redis.nodes>            </properties>        </profile>    </profiles>
  • 部署时如何选择环境?
  • 使用maven打包时,idea上选择对应环境即可
  • 代码中需要使用这些变量时,如何获取?
  • 其实有很多种方法,我提供一种比较偷懒的法子,在Spring配置文件中定义Bean,然后建立相关类,这样spring框架会自动注入这个类,代码如下
    <bean id="Variables" class="com.util.Variables">        <property name="redis_nodes" value="${redis.nodes}"/>    </bean>
public class Variables {    static String redis_nodes;    public static String getRedis_nodes() {        return redis_nodes;    }    public void setRedis_nodes(String redis_nodes) {        this.redis_nodes = redis_nodes;    }}
  • 出于安全考虑,线上环境的一些参数,并不会直接写到pom文件中,而是在部署时,通过docker替换;
  • 测试环境,部署的时候用的也是pom文件下的生产环境,只是在替换时,用的测试环境参数;
  • 这样做的好处是进一步确保上线安全,之前有过生产环境参数和测试环境参数不一致的情况
原创粉丝点击