项目实现不同环境不同配置文件-maven profile
最近接触的项目都是在很多地方都落地的项目,需要支持不同的环境使用不同的配置文件。一直以来都以为是人工的去写不同的配置文件,手动的去修改运用的配置文件。感觉自己还是太low呀。maven的使用的还停留在基础上。后面看项目才发现maven可以不同环境不同的发布,只需要制定环境参数或者设置就可以,整个工程简单粗暴。觉的非常不错,于是想深入的了解一下。写下此文.
一、maven profile介绍
profile可以让我们定义一系列的配置信息,然后指定其在相应的环境下使用相应的配置文件。这样我们就可以根据环境的不同切换不同的配置文件,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。for example,我们的项目落地不同的地域,每个地域都有每个地域特色的功能,需要我们配置不同一些参数。更加实际的情况是我们的生产环境与测试环境使用不同的数据库,账号密码、连接地址可能不一样,如果每次你都切换环境都需要自己手动去修改这些东西,一次两次你可能觉的还好,每次测试、上线都需要修改的时候我保证你会疯的。相信我!哈哈,这个时候就是profile的作用,可以一次性解决你的问题。特别结合持续集成工具的时候,profile可以很方便的上线发布。
二、如何配置profile
profile有三种配置方式:
单个项目配置:第一种是直接在pom.xml中配置
用户配置:可以在用户的setting.xml中配置。该文件在用户家目录下的“.m2”目录下。
全局配置:可以在maven的conf的setting.xml中配置。
在pom.xml中配置的用法(个人推荐)
<profiles> <!--本机环境(127.0.0.1) --> <profile> <id>local</id>//指定profile id <properties> <dir>conf</dir>//配置文件所在位置 <env>ecosp_develop_local</env>//文件名 <suffix>local</suffix> </properties> <activation> <activeByDefault>true</activeByDefault>//默认使用的配置文件 </activation> </profile> <!--测试环境(172。0.0.1) --> <profile> <id>test</id> <properties> <dir>conf</dir> <env>ecosp_develop_test</env> <suffix>test</suffix> </properties> </profile> <profiles>
setting.xml中配置profile
当profile定义在settings.xml中时意味着该profile是全局的,它会对所有项目或者某一用户的所有项目都产生作用。因为它是全局的,所以在settings.xml中只能定义一些相对而言范围宽泛一点的配置信息,比如远程仓库等。而一些比较细致一点的需要根据项目的不同来定义的就需要定义在项目的pom.xml中。具体而言,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用。
三、如何使用profile
1、如何制定使用那个profile
pom.xml中的activation标签可以设置默认使用的profile.
setting.xml的activeProfiles标签可以设置使用的profile。
mvn package –P test命令,-P指定了使用那个profile。
四、总结
1、使项目适配不同的环境非常方便,提高开发效率。
2、依赖于maven。