Maven多环境配置:开发环境、测试环境、生产环境打包配置
需求是配置maven在不同的环境可以打包出不同的包。
这里一些同学会问,为什么要这样做?这样做的好处是什么?
举个栗子:如果开发项目的时候,流程是:开发->测试->正式上线;那么你的项目将需要在不同的环境下运行,那么你的项目在不同环境下,数据库的地址,或者系统的一些其他设置或配置是不同的。如果配置了根据不同环境打包出相应的文件,那么部署到相应的环境的时候就不需要频繁的修改上述配置;节省了很多修改上述配置所用的时间。(个人觉得改配置文件是件和闹心的事情)
网上爬了不少的博客,表达思路不算清晰,所以自己整理以下,以便有需要的人进行参考。
注意:
1、这里是在main目录下配置多环境,test目录暂无研究。
2、此文的前提是你已经熟悉maven的使用。
3、此文默认你已经有一个已经可以正常编译运行,并且拥有众多配置文件的maven项目。
1、在resource目录下创建一个env文件夹(命名可根据自己习惯,这里是environment缩写而成)
2、在上一步创建好的文件夹中创建dev、test、prod,三个文件夹(命名可根据自己习惯,这里是development、test、product缩写而成)
3、修改pom文件
(1)添加profiles标签
<profiles>
<profile>
<id>dev</id><!--执行打包命令时将使用此处的id进行定位-->
<properties>
<env>dev</env><!--此处为对应的环境放置配置文件的目录,上一步创建的为dev,这里设置为dev。下面两个目录配置参照此处-->
</properties>
<activation>
<activeByDefault>true</activeByDefault><!--此处将dev设置为默认环境-->
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
当然了,这里不排除有人不知道这个标签放在哪个地方,我一般习惯放在dependencies标签的前面。
(2)配置build标签
在build标签里面添加resources标签:
<resources>
<resource><!--此处的设置是打包的时候排除不相关的目录-->
<directory>src/main/resources/env</directory><!--此处设置为上面在resource目录下创建的文件夹-->
<excludes>
<exclude>dev/*</exclude>
<exclude>test/*</exclude>
<exclude>prod/*</exclude>
</excludes>
<filtering>true</filtering><!--开启过滤器,此处不能忽略!-->
</resource>
<resource><!--此处的设置是为了将放置于resource文件夹下mybatis的mapper文件正常打包进去,和一些不需要多环境的配置文件-->
<directory>src/main/resources</directory><!--如果将mybatis的mapper文件放在dao接口的同目录下,应该将此处设置为src/main/java-->
<includes>
<include>**/email.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering><!--此处不需要过滤器过滤-->
</resource>
<resource><!--此处设置是配置相应配置文件夹的路径-->
<directory>src/main/resources/env/${env}</directory>
</resource>
</resources>
这个标签我一般习惯放置于finalName标签下面。
到此,所有配置都已经完毕。
如果,你想打包的时候文件名称能够带上相应环境,那么将finalName标签配置如下即可:
<finalName>${project.artifactId}-${env}</finalName>
最后,你可以使用 mvn package -Pdev
打包出在开发环境下运行的文件,如果你想打包测试环境,生产环境,只需要修改参数 -Ptest -Pprod。
注意:此处 -P为大写,后面参数为上面步骤配置的id。
最后效果如下:
下一篇: urlscan.ini中文详解注释