我在Maven中使用了Spring Boot应用程序,我需要设置Spring属性,但我无法解决这个问题.
问题:
假设有一个Spring应用程序和应用程序.属性应该设置了spring.datasource.url
个.
我有两个Maven配置文件,其中包含两个不同的应用程序.properties文件,一个用于开发,另一个用于部署.例如,应用程序容器.properties和应用程序-Dev.Properties:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<activatedProperties>dev</activatedProperties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>container</id>
<properties>
<activatedProperties>container</activatedProperties>
<spring.profiles.active>container</spring.profiles.active>
</properties>
</profile>
</profiles>
和应用程序.属性:
spring.profiles.active=@spring.profiles.active@
- 对于开发和测试,它应该类似于
应用程序-Dev.Properties:
spring.datasource.url=jdbc://devdatabase://localhost:12345/database
- 构建的应用程序应该在容器中运行,假设它是 docker .对于docker应用程序.属性将如下所示
应用程序容器.属性:
spring.datasource.url=${DATASOURCE}
并且在docker中将使用env文件,如(docker-compose.yaml):
env_file:
- ./docker.env
其中docker.env类似于:
DATASOURCE=jdbc://proddatabase://prodhost:2345/proddatabase
问题是,当我在本地为docker部署构建应用程序时,我无法运行测试,因为预计将从系统环境中设置spring.datasource.url
.我试图找到一个maven插件来从文件中加载环境变量(S),但没有成功.
值得一提的是,我实际上有大约20-30个这样的参数.
我的问题是:我怎么才能解决这个问题呢?我还不熟悉maven,也许除了在容器中构建之外,我还可以使用其他方法?理想情况下,我希望使用从环境中获取值的单个应用程序.properties,并通过使用不同的env文件将环境切换为maven,就像在docker中所做的那样.如果也能看到一些例子,那就太好了.
我们非常感谢您的建议.谢谢.