maven的profile切换项目各环境的参数,

发布时间:2018-05-16作者:laosun阅读(2398)

maven的profile切换项目各环境的参数,

在实际开发项目中,常常有几种环境,一般情况下最少有三种环境:开发、测试、正式。各个环境之间的参数各不相同,比如数据库,这三者使用的数据都不一样,所以上线之前来回修改参数1不安全,2太麻烦。而maven提供这种打包方式:比如mvn clean -P名字 package

    profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们可以通过操作系统的不同来使用不同的配置信息,比如windows下是一套信息,linux下又是另外一套信息;再或者开发者一套环境,线上一套环境等等。

    来看如何设置吧,这里我演示两套环境,开发一套、线上一套:


    在pom.xml 文件中 project 节点下增加:

    <build>
    		<!-- ROOT -->
    		<finalName>sys_sunjs</finalName>
    		<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
    		<filters>
    			<!-- maven profile 动态加载配置信息 -->
    			<filter>${project.basedir}/src/main/resources/filters/filters-${active.profile}.properties</filter>
    		</filters>
    		<resources>
    			<resource>
    				<directory>${project.basedir}/src/main/resources</directory>
    				<filtering>true</filtering>
    			</resource>
    			<resource>
    				<directory>src/main/java</directory>
    				<includes>
    					<include>**/*.pfx</include>
    					<include>**/*.cer</include>
    					<include>**/*.png</include>
    				</includes>
    				<filtering>false</filtering>
    			</resource>
    		</resources>
    	</build>
    
    	<profiles>
    		<profile>
    			<!-- (开发小组内自测的)开发环境(dev) -->
    			<id>dev</id>
    			<properties>
    				<active.profile>dev</active.profile>
    			</properties>
    			<activation>
    				<activeByDefault>true</activeByDefault><!--默认启用的是local环境配置 -->
    			</activation>
    		</profile>
    		<profile>
    			<!-- 正式生产环境(prod) -->
    			<id>prod</id>
    			<properties>
    				<active.profile>prod</active.profile>
    			</properties>
    		</profile>
    	</profiles>

    然后在resources目录下创建filters目录。

    在其下边创建两个文件:

    filters-dev.properties

    filters-prod.properties

    从文件名应该就可以看出dev是开发环境,prod是线上环境。

    然后在两个文件中分别配置下边的设置。当然最好不一样,因为是两套环境。

    db.url=jdbc:mysql://127.0.0.1:3306/xxxxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true
    db.user=root
    db.pass=root


    然后在resources目录下创建个config.properties,来承载这些参数,比如:

    db.url=${db.url}
    db.user=${db.user}
    db.pass=${db.pass}


    好了,到此配置完成,如果是eclipse如何手动的切换环境配置呢:

    对着项目名称点击右键-->Maven-->Maven profile Selection

    image.png

    请忽略我上边的jdk-1.8,我那是在maven的配置文件中增加的,因为创建maven项目后,默认使用jdk1.5。我发过类似这种解决方案的,可以自己搜索一下。

    从上图中我们可以看到dev是默认加载的,我们可以选择prod,然后点击OK,那么config.properties就会加载成filters-prod.properties中的配置。

    打包的时候使用:mvn clean -Pprod package 结果是同样的道理。


0 +1

版权声明

 maven

 请文明留言

0 条评论