我有两个Spring Profile:dev和test。我想在服务器环境中设置活动概要文件,但不想在代码中设置它,这样无论我在哪里部署应用程序,概要文件都会根据服务器中的概要文件加载。我该怎么做?
dev
test
lnlaulya1#
您可以简单地在服务器上设置一个系统属性,如下所示...
-Dspring.profiles.active=test
**编辑:**要在eclipse中将其添加到tomcat,请选择Run -> Run Configurations并选择Tomcat运行配置。单击Arguments选项卡并在VM arguments的末尾添加-Dspring.profiles.active=test。另一种方法是将该属性添加到catalina.propertiesServers项目中的www.example.com,但如果在那里添加它,则忽略-D。**编辑:配合Sping Boot **使用,多了一个选择。如果在属性前面加上两个破折号,则可以将属性作为程序参数传递。
Run -> Run Configurations
Arguments
VM arguments
Servers
-D
下面是使用Sping Boot 可执行jar文件的两个示例...
系统属性
$ java -jar -Dspring.profiles.active=test myproject.jar
程序参数
$ java -jar myproject.jar --spring.profiles.active=test
jobtbby32#
至少有两种方法可以做到这一点:1.在web.xml中定义上下文参数-这打破了“一个包用于所有环境”的说法。我不建议你这么做1.定义系统属性-Dspring.profiles.active=your-active-profile我认为定义系统属性是一种更好的方法。那么如何为Tomcat定义系统属性呢?在互联网上,我可以找到很多建议,如“修改catalina.sh”,因为你不会找到任何配置文件做这样的事情。修改catalina.sh是一个肮脏的不可维护的解决方案。有一个更好的方法来做到这一点。只需setenv.sh在Tomcat的bin目录中创建文件www.example.com,内容如下:
-Dspring.profiles.active=your-active-profile
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"
并且它将在运行catalina.sh start或run期间自动加载。Here is a blog描述上述解决方案。
vngu2lb83#
对于Eclipse,在VM参数中设置**-Dspring.profiles.active变量就可以了。转到右键单击项目-->运行方式-->运行配置-->参数并在*VM参数中添加**-Dspring.profiles.active=dev**
-Dspring.profiles.active
-Dspring.profiles.active=dev
uqzxnwby4#
作为系统环境变量:
**Windows:**开始->键入“envi”选择环境变量并添加新的:Name: spring_profiles_active Value: dev(或任何你的)**Linux:**在PATH下的/etc/environment中添加以下行:
Name: spring_profiles_active Value: dev
spring_profiles_active=prod(或任何配置文件)然后还有export spring_profiles_active=prod,所以现在在运行时中有它。
spring_profiles_active=prod
export spring_profiles_active=prod
wn9m85ua5#
在<tomcat-home>\conf\catalina.properties文件中,添加以下新行:
<tomcat-home>\conf\catalina.properties
spring.profiles.active=dev
e5njpo686#
对于Tomcat 8:Linux:创建setenv.sh并更新如下:export SPRING_PROFILES_ACTIVE=dev窗口:创建setenv.bat并更新如下:设置SPRING_PROFILES_ACTIVE=dev
6条答案
按热度按时间lnlaulya1#
您可以简单地在服务器上设置一个系统属性,如下所示...
**编辑:**要在eclipse中将其添加到tomcat,请选择
Run -> Run Configurations
并选择Tomcat运行配置。单击Arguments
选项卡并在VM arguments
的末尾添加-Dspring.profiles.active=test
。另一种方法是将该属性添加到catalina.propertiesServers
项目中的www.example.com,但如果在那里添加它,则忽略-D
。**编辑:配合Sping Boot **使用,多了一个选择。如果在属性前面加上两个破折号,则可以将属性作为程序参数传递。
下面是使用Sping Boot 可执行jar文件的两个示例...
系统属性
程序参数
jobtbby32#
至少有两种方法可以做到这一点:
1.在web.xml中定义上下文参数-这打破了“一个包用于所有环境”的说法。我不建议你这么做
1.定义系统属性
-Dspring.profiles.active=your-active-profile
我认为定义系统属性是一种更好的方法。那么如何为Tomcat定义系统属性呢?在互联网上,我可以找到很多建议,如“修改catalina.sh”,因为你不会找到任何配置文件做这样的事情。修改catalina.sh是一个肮脏的不可维护的解决方案。有一个更好的方法来做到这一点。
只需setenv.sh在Tomcat的bin目录中创建文件www.example.com,内容如下:
并且它将在运行catalina.sh start或run期间自动加载。
Here is a blog描述上述解决方案。
vngu2lb83#
对于Eclipse,在VM参数中设置**
-Dspring.profiles.active
变量就可以了。转到
右键单击项目-->运行方式-->运行配置-->参数
并在*VM参数中添加**
-Dspring.profiles.active=dev
**uqzxnwby4#
作为系统环境变量:
**Windows:**开始->键入“envi”选择环境变量并添加新的:
Name: spring_profiles_active Value: dev
(或任何你的)**Linux:**在PATH下的/etc/environment中添加以下行:
spring_profiles_active=prod
(或任何配置文件)然后还有
export spring_profiles_active=prod
,所以现在在运行时中有它。wn9m85ua5#
在
<tomcat-home>\conf\catalina.properties
文件中,添加以下新行:e5njpo686#
对于Tomcat 8:
Linux:
创建setenv.sh并更新如下:
export SPRING_PROFILES_ACTIVE=dev
窗口:
创建setenv.bat并更新如下:
设置SPRING_PROFILES_ACTIVE=dev