Spring boot Spring Boot Jenkins CD/CI在部署前更改配置文件
我有一个SpringBootWeb应用程序,需要使用Jenkins将其部署到Tomcat 我已经设置好了管道,部署进行得很顺利 但是,我的应用程序中有两个配置文件。一个用于开发,另一个用于生产。对于这些配置文件,有些属性(如DB URL等)是不同的 因此,我在Spring boot Spring Boot Jenkins CD/CI在部署前更改配置文件,spring-boot,tomcat,jenkins,Spring Boot,Tomcat,Jenkins,我有一个SpringBootWeb应用程序,需要使用Jenkins将其部署到Tomcat 我已经设置好了管道,部署进行得很顺利 但是,我的应用程序中有两个配置文件。一个用于开发,另一个用于生产。对于这些配置文件,有些属性(如DB URL等)是不同的 因此,我在src/main/resources中有两个属性文件,如下所示: application-dev.properties application-prod.properties 另外,我在同一目录中还有另一个application.prop
src/main/resources
中有两个属性文件,如下所示:
application-dev.properties
application-prod.properties
另外,我在同一目录中还有另一个application.properties
,它只有一个属性(活动配置文件的属性)
现在,当我在Eclipse中运行它时,一切都很好。即使詹金斯将战争部署到tomcat上,除了一个问题外,一切都很好。在部署到Tomcat之前,我无法将spring.profiles.active
的值更改为prod
目前,我的SVN拥有使用spring.profiles.active=prod提交的application.properties
文件
当有人签出代码并在本地环境中工作时,他们会将其更改为“dev”并继续工作,但他们不会将此更改提交给SVN。这是我遵循的临时解决方法,我觉得这可以以更有效的方式完成
我如何拥有相同的WAR文件并只更改配置文件而不必修改application.properties文件?这能在詹金斯做到吗?或者我应该去别的地方看看
谢谢,
Sriram Sridharan第一步是从属性文件中删除硬编码的配置文件名,然后通过设置
SPRING\u PROFILES\u ACTIVE=dev
。它与在属性文件中设置spring.profiles.active=dev
相同。第一步是从属性文件中删除硬编码的配置文件名,然后通过设置
SPRING\u PROFILES\u ACTIVE=dev
。它与在属性文件中设置spring.profiles.active=dev
相同。如果您使用的是spring引导应用程序,那么在运行应用程序之前,您应该提供-Dspring.profiles.active=prod。默认情况下,spring环境变量会覆盖属性文件中的配置。
但我同意yogesh给出的答案,即不应在应用程序中硬编码配置文件
现在,当开发人员在eclipse或intellij运行配置中签出代码时,他们也可以提供-Dspring.profiles.acitve=dev作为参数
这是eclipse/intellij中的一次性配置更改,并且工作得非常好。
我们在项目中使用了它,它确实很有帮助。如果您使用的是spring boot应用程序,那么在运行应用程序之前,您应该提供-Dspring.profiles.active=prod。默认情况下,spring环境变量覆盖属性文件中的配置。
但我同意yogesh给出的答案,即不应在应用程序中硬编码配置文件
现在,当开发人员在eclipse或intellij运行配置中签出代码时,他们也可以提供-Dspring.profiles.acitve=dev作为参数
这是eclipse/intellij中的一次性配置更改,并且工作得非常好。
我们正在我们的项目中使用它,它真的很有帮助。谢谢。当我尝试在eclipse中更改运行配置时,此解决方案可以工作。那么,如何在远程服务器中的Tomcat中实现这一点呢?请注意,远程服务器可以运行多个Tomcat实例,这可能是服务不同环境所必需的。在这种情况下,我无法设置环境变量。我可以为特定的tomat实例设置属性吗?如果您有多个tomcat并且不想使用环境变量,我看到的唯一选项是通过在catalina.sh/startup.sh
中使用-Dspring.profiles.active=dev
设置概要文件。谢谢,这在我使用startup.sh/startup.bat启动Tomcat时起作用。然而,当我将Tomcat作为一项服务(在Windows上)启动时,它似乎不起作用。如果我想启动tomcat作为一项服务,还有其他文件需要更新吗?你能看看这篇文章吗?谢谢当我尝试在eclipse中更改运行配置时,此解决方案可以工作。那么,如何在远程服务器中的Tomcat中实现这一点呢?请注意,远程服务器可以运行多个Tomcat实例,这可能是服务不同环境所必需的。在这种情况下,我无法设置环境变量。我可以为特定的tomat实例设置属性吗?如果您有多个tomcat并且不想使用环境变量,我看到的唯一选项是通过在catalina.sh/startup.sh
中使用-Dspring.profiles.active=dev
设置概要文件。谢谢,这在我使用startup.sh/startup.bat启动Tomcat时起作用。然而,当我将Tomcat作为一项服务(在Windows上)启动时,它似乎不起作用。如果我想启动tomcat作为一项服务,还有其他文件需要更新吗?你能看看这篇文章吗?
spring.profiles.active=dev