我正在尝试将 pom.xml 中的属性加载到 application.properties 中。我想创建两个配置文件:dev 和 prod 以使用不同的数据库 url。我使用 Jenkins 作为 CI,在我的所有应用程序(主要是 Spring MVC,没有 Boot 项目)中都使用 Maven 配置文件部署到 Tomcat。有没有可能使用 Maven 属性来做到这一点?
我尝试过类似的事情:spring.datasource.url=${jdbc.url}
在执行此操作之前,请考虑将属性文件从可部署包中外部化。这样您就可以在每个环境上部署相同的编译。它将为您的 Jenkins 节省一些实际上不必要的工作。最佳实践是仅构建应用程序一次,但是,如果您不相信,请按以下步骤操作。
-
In your pom.xml使用适当的属性值定义配置文件。
<profile>
<id>dev</id>
<properties>
<jdbc.url>your_dev_URL</jdbc.url>
</properties>
</profile>
-
设置Maven 资源插件 http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html过滤包含您的目录应用程序属性 file.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
-
如果您使用 Spring Boot 1.3 或更高版本,您应该注意这样一个事实:为了避免 Spring Boot 占位符和 Maven 资源插件过滤的令牌之间发生冲突,框架引入了需要使用不同语法的解决方案 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering对于过滤值。
现在,改为${property.key}
你应该使用@property.key@
。在这种情况下,您的应用程序属性必须包含以下示例才能按您的预期工作:
[email protected] /cdn-cgi/l/email-protection@
您还可以查看有关的帖子为不同的 Maven 配置文件分隔 Spring 属性文件 http://dolszewski.com/spring/spring-boot-properties-per-maven-profile/。这样您就可以将 pom.xml 中的值外部化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)