通过maven的profile实现按环境来加载配置文件

项目结构

project_file_root
|—-main
|————java
|————resources
|————profile
|———————-dev
|———————-test
|———————-beta
|———————-release

pom.xml
  1. <profiles>
  2. <profile>
  3. <id>dev</id>
  4. <activation>
  5. <activeByDefault>true</activeByDefault>
  6. </activation>
  7. <properties>
  8. <config.dir>dev</config.dir>
  9. </properties>
  10. </profile>
  11. <profile>
  12. <id>test</id>
  13. <properties>
  14. <config.dir>test</config.dir>
  15. </properties>
  16. </profile>
  17. <profile>
  18. <id>beta</id>
  19. <properties>
  20. <config.dir>beta</config.dir>
  21. </properties>
  22. </profile>
  23. <profile>
  24. <id>release</id>
  25. <properties>
  26. <config.dir>release</config.dir>
  27. </properties>
  28. </profile>
  29. </profiles>
  30. <build>
  31. <resources>
  32. <resource>
  33. <directory>src/main/profile/${config.dir}</directory>
  34. <targetPath>./</targetPath>
  35. </resource>
  36. <resource>
  37. <directory>src/main/resources</directory>
  38. <targetPath>./</targetPath>
  39. </resource>
  40. </resources>
  41. </build>

思路

大致思路就是建一个profile的目录,这个目录名可以随意只要跟后面保持一致就行,然后在这个目录下面建几个按环境区分的目录,通常是dev(开发),test(测试),beta(预发),release(正式)。然后再通过maven的profile特性,生成按环境的${config.dir}的值。最后通过maven的resources标签来完成配置文件的拷贝,大功告成。

打包命令
  1. mvn clean install -P(profile_id)
  2. eg. mvn clean install -Pdev --打包开发环境的配置文件