将外部属性添加到类路径以实现 Maven 依赖

问题描述 投票:0回答:2

我在 Openshift 上部署了一个 spring-boot 应用程序。 该应用程序依赖于一个普通的旧 java 应用程序,该应用程序已作为 Maven 依赖项添加。 maven 依赖项需要类路径上有一个

foo.properties
文件,它使用以下方式加载
foo.properties
文件:

inputStream = this.getClass().getResourceAsStream("/foo.properties");

foo.properties
文件将包含不同的值,具体取决于其部署到的环境。 我尝试通过向 openshift 添加 configmap 并将其安装在以下位置来外部化属性:
/deployments/config

我已将 spring 属性添加到 openshift 环境变量中:

spring.config.name foo
spring.config.location /deployments/config/

但是maven依赖无法拾取

foo.properties
,返回null。

我正在尝试实现的目标是否可以实现,或者是否有其他解决方案可以解决此问题?

java spring-boot openshift
2个回答
1
投票

spring.config.location与java本机getResourceAsStream方法无关,因此它没有帮助

为了让 JVM 将 /deployments/config/ 解释为类路径的一部分,您必须将此文件夹包含到 java 命令中的类路径中。

您可能有一个带有此行的 Dockerfile

java -jar service.jar

修改为

java -cp service.jar:/deployments/config mypackage.MyApplication

0
投票

通过配置 OCP4 环境变量解决了这个问题:

JAVA_MAIN_CLASS
JAVA_CLASSPATH

JAVA_MAIN_CLASS=-Dloader.main=your.spring.application.class org.springframework.boot.loader.JarLauncher

JAVA_CLASSPATH=/deployments/your.spring.application.jar:/deployments/data/:.

不可能在命令行上同时使用

-jar
-cp
https://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/java.html#-jar

© www.soinside.com 2019 - 2024. All rights reserved.