14.4 Maven Profile
从前面内容我们看到,不同环境的构建很可能是不同的,典型的情况就是数据库的配置。除此之外,有些环境可能需要配置插件使用本地文件,或者使用特殊版本的依赖,或者需要一个特殊的构件名称。要想使得一个构建不做任何修改就能在任何环境下运行,往往是不可能的。为了能让构建在各个环境下方便地移植,Maven引入了profile的概念。profile能够在构建的时候修改POM的一个子集,或者添加额外的配置元素。用户可以使用很多方式激活profile,以实现构建在不同环境下的移植。
14.4.1 针对不同环境的profile
继续以14.2节介绍的数据库差异为例,代码清单14-4引入了一个针对开发环境的profile,类似地,可以加入测试环境和产品环境的profile,如代码清单14-8所示。
代码清单14-8 基于开发环境和测试环境的profile
<profiles>
<profile>
<id>dev</id>
<properties>
<db.driver>com.mysql.jdbc.Driver</db.driver>
<db.url>jdbc:mysql://localhost:3306/test</db.url>
<db.username>dev</db.username>
<db.password>dev-pwd</db.password>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<db.driver>com.mysql.jdbc.Driver</db.driver>
<db.url>jdbc:mysql://192.168.1.100:3306/test</db.url>
<db.username>test</db.username>
<db.password>test-pwd</db.password>
</properties>
</profile>
</profiles>
同样的属性在两个profile中的值是不一样的,dev profile提供了开发环境数据库的配置,而test profile提供的是测试环境数据库的配置。类似地,还可以添加一个基于产品环境数据库配置的profile。由于篇幅原因,在此不再赘述。
现在,开发人员可以在使用mvn命令的时候在后面加上-Pdev激活dev profile,而测试人员可以使用-Ptest激活test profile。