Jakarta ee 如何在thorntail 2.4中将配置文件设置为默认配置文件

Jakarta ee 如何在thorntail 2.4中将配置文件设置为默认配置文件,jakarta-ee,thorntail,Jakarta Ee,Thorntail,问题: 我使用Thorntail 2.4.0-Final在JavaEE中创建了一个应用程序。 我有两个yaml文件,“project default.yml”和“project local.yml”。 我的Postgres信息在default.yml中,我的H2信息在local.yml中。 如果我使用命令行“java-jarmyapplication.jar”启动应用程序,他将使用default.yml。如果我在命令行中添加-Slocal,他将使用local.yml,但我希望他使用local.y

问题:

我使用Thorntail 2.4.0-Final在JavaEE中创建了一个应用程序。 我有两个yaml文件,“project default.yml”和“project local.yml”。 我的Postgres信息在default.yml中,我的H2信息在local.yml中。 如果我使用命令行“java-jarmyapplication.jar”启动应用程序,他将使用default.yml。如果我在命令行中添加-Slocal,他将使用local.yml,但我希望他使用local.yml作为默认值。 我知道我可以重命名2个yaml文件,因此默认值为H2,但这并不能解决我的问题,因为我想将我的应用程序部署到云中,在云中,他应该使用Postgres而不是H2,并且没有选项说“cf push myapplication-S…”

问题:

当我在本地启动应用程序时,如何告诉我的应用程序他使用了“project local.yml”文件,而不添加“-Slocal”


我怎样才能通过添加一个命令来推送我的应用程序,告诉它应该使用哪个yaml文件?

Thorntail不知道它在哪个环境中运行。配置配置文件的目的就是让您能够控制所应用的配置。如果您知道本地环境如何可靠地工作!检测到,我认为这将是一个伟大的功能要求

也就是说,CloudFoundry不允许您配置用于启动应用程序的命令,这似乎很奇怪。根据,您可以使用-c参数来配置命令

不过,这看起来相当低级,所以这里有另一个选择。除了-s和-s参数外,还可以使用thorntail.project.stage.file和thorntail.project.stage系统属性。在这里,您可以设置thorntail.project.stage,它大致相当于-S.Per。您可以通过创建JAVA_OPTS环境变量来设置任意系统属性


因此,如果您使用H2将project-defaults.yml切换到本地设置,并使用PostgreSQL使用生产设置创建例如project-cloud.yml,那么在cloud Foundry中创建环境变量JAVA_OPTS=-Dthorntail.project.stage=cloud就足够了。

,阅读:@FelixAballi-你是说除了系统属性-Dthorntail.PROJECT.STAGE之外,环境变量THORNTAIL_PROJECT_STAGE也可以工作?我不认为这是一个意图,但有道理,实际上是一个很好的观点。谢谢实际上,@ladicek在之前的项目链接中也测试了这两种方法。这就是为什么我想提供更广泛的范围,如果您使用容器化的微服务,但也处理多个配置文件:dev、test、prod。此外,JVM检测这些范围中定义的变量,即使它们不是直接通过:-D'property.name'约定设置的-