Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring Boot Jenkins CD/CI在部署前更改配置文件_Spring Boot_Tomcat_Jenkins - Fatal编程技术网

Spring boot Spring Boot Jenkins CD/CI在部署前更改配置文件

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

我有一个SpringBootWeb应用程序,需要使用Jenkins将其部署到Tomcat

我已经设置好了管道,部署进行得很顺利

但是,我的应用程序中有两个配置文件。一个用于开发,另一个用于生产。对于这些配置文件,有些属性(如DB URL等)是不同的

因此,我在
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