首页 文章

如何在类路径上使用额外文件运行Spring Boot应用程序而不修改应用程序(xxx.jar)

提问于
浏览
1

我想运行一个Spring Boot应用程序,在类路径上有一个额外的文件(恰好是一个css) . 我无法触摸jar(应用程序本身) . 我只能修改启动脚本 .

我收到了一个带有应用程序的启动脚本::

#! /bin/sh
commandline="java -jar xxx-1.0.0.jar"
commandline="$commandline --spring.config.location=../config/xxx.properties"
commandline="$commandline --logging.config=../config/log4j2.xml"
$commandline

我天真的第一次尝试是使用-cp添加文件夹并将文件放入该文件夹 . 但是这不起作用,因为-cp和-jar不兼容(这里很好的解释:Differences between "java -cp" and "java -jar"?

然后我找到了使用PropertiesLauncher loader.path的建议,它可以看作是命令行(https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-property-launcher-features)上类路径的替代品 . 但是要使用PropertiesLauncher,示例建议修改pom,我不能这样做(Spring Boot: Is it possible to use external application.properties files in arbitrary directories with a fat jar?

我能做的是修改shell脚本 .

我应该如何(如果可能的话)将额外的文件放在类路径上而不修改Spring Boot应用程序?

2 回答

  • 3

    这对我也有用:

    #! /bin/sh
    commandline="java -cp ../css:xxx-1.0.0.jar org.springframework.boot.loader.JarLauncher"
    commandline="$commandline --Spring.config.location=../config/xxx.properties"
    commandline="$commandline --logging.config=../config/log4j2.xml"
    $commandline
    

    在我的情况下,这似乎比使用PropertiesLauncher更简单 .

  • 1

    我发现这篇文章,它展示了如何在不修改应用程序的情况下使用PropertiesLauncher(不修改pom.xml):https://mash213.wordpress.com/2017/01/05/hack-how-2-add-jars-2-springboot-classpath-with-jarlauncher/

    所以上面我可以在类路径中添加一个额外的文件夹,它确实有效:

    #! /bin/sh
    commandline="java -Dloader.path=../css -cp xxx-1.0.0.jar org.springframework.boot.loader.PropertiesLauncher"
    commandline="$commandline --spring.config.location=../config/xxx.properties"
    commandline="$commandline --logging.config=../config/log4j2.xml"
    $commandline
    

相关问题