欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven多环境配置:开发环境、测试环境、生产环境打包配置

程序员文章站 2022-06-13 19:13:17
...

需求是配置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。

最后效果如下:

Maven多环境配置:开发环境、测试环境、生产环境打包配置