4

I have a project with Spring profile

In my web.xml, i have

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>dev</param-value>
</context-param>

to set the default spring profile.

I build the maven project with

clean install -Dspring.profiles.active="prod"

Then, I choose the option Run As -> Run on Server to deploy the maven project to tc Server.

However, the active profile is still dev.

What is the correct way to activate a spring profile on tc Server

4

3 回答 3

1

配置 Tomcat

  • 在 web.xml 中定义上下文参数——这打破了“一个包适用于所有环境”的声明。我不建议这样做
  • 定义系统属性 -Dspring.profiles.active=your-active-profile

我相信定义系统属性是更好的方法。那么如何为Tomcat定义系统属性呢?在互联网上,我可以找到很多建议,例如“修改 catalina.sh”,因为您找不到任何配置文件来执行此类操作。修改 catalina.sh 是一个肮脏的不可维护的解决方案。有一种更好的方法可以做到这一点。

只需在 Tomcat 的 bin 目录中创建包含以下内容的文件 setenv.sh:

JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active="prod"

它会在运行 catalina.sh start 或 run 时自动加载。

于 2014-09-05T14:55:55.397 回答
1

如果您使用 STS 和它附带的 tc Server 运行您的应用程序,您可以将系统属性定义放入 tc Server 的启动配置中。启动 tc Server 一次后,您可以通过“Run Configurations...”修改 lauch 配置,为 Pivotal tc Server 选择一个,转到 VM 参数并添加 -Dspring.profiles.active=prod 设置。

由于这是一个运行时选项,因此在通过 Maven 构建应用程序时(您尝试过的全新安装方式)它不会产生任何影响。

于 2014-09-06T10:48:46.053 回答
0

我不知道为什么 JAVA_OPTS 方法对我不起作用。

spring.profiles.active=dev是什么意思?/conf/catalina.properties

于 2021-11-04T14:55:29.117 回答