maven使用profile分别打包测试环境和正式环境

我们在开发和部署的时候,有很多配置文件数据是不一样的,比如连接mysql,连接redis,一些properties文件等等。如果每次部署或者开发都要改配置文件太麻烦了,这个时候,maven的profile就起到很大的作用。

1.修改pom.xml

在项目下pom.xml的project节点下创建了开发环境和线上环境的profile

其中id代表这个环境的唯一标识,下面会用到

properties下我们我们自己自定义了标签env,内容分别是dev和prd。

activeByDefault=true代表如果不指定某个固定id的profile,那么就使用这个环境。

2.工程目录按dev和prd分别放置文件

下面是我们resources下的目录,有两个目录,dev和prd,在开发时,我们使用dev下的配置文件,部署时候使用prd下的配置文件

+src
|_main
|__java
|_resources
|__dev
|___env.properties
|__prd
|___env.properties
|__a.property

3.配置pom中的build

配置pom.xml,如果直接install,那么就会找到默认的id为dev的这个profile,然后会在里面找env的节点的值,接着就会执行替换,相当于将src/main/resources/dev这个文件夹下的所有的配置文件打包到classes根目录下。

4.运行maven命令

mvn package -P dev 将使用profile为dev的配置

mvn package -P prd 使用profile为prd的配置

这个时候target下springmvc项目下的classes根目录下有了env.properties,并且里面内容是我们指定的那个env.properties。

5.补充

但是发现resources下的a.properties文件没有被打包进去,那是因为我们只指定了resources/${env}下的文件打包到根目录下,并没有指定其他文件。

我们在pom.xml下的resources节点下新增规则

再执行打包就会将resources下的除了dev文件夹和prd文件夹的其他所有文件打包到classes根目录下了。

最后注意:如果有其他配置文件在src/main/java目录下,也是可以这样指定的,但是要指定

不然会将java类当配置文件一块放到classes根目录下,加了include就会只匹配符合条件的放到target的classes根目录下。

 

最后放上完整的配置

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注