有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

构建后将jar添加到springboot jar类路径的java策略

我处理一大组在容器中运行SpringBoot的服务。我们构建了一个“SpringBootJAR”,并用“java-Jar…”执行它作为容器中的开始脚本

我被要求实现一些在概念上似乎很简单的东西,但我发现它可能相当粗糙

需要做的是,脚本需要检查映射卷中的特定jar文件,如果存在,则使用扩展类路径(包括附加jar)运行spring引导服务

我意识到这相当混乱,因为当您使用“java-jar”执行Spring引导jar时,您不能仅仅“扩展类路径”。如果命令行上有“-jar”,它将忽略所有“-cp”选项

这一简单的事实要求检查对原始jar进行大量内省的可能性,至少获得完整的BOOT-INF/lib jar列表,并构建一个新的类路径字符串,包括所有这些jar以及其他jar,更不用说BOOT-INF/CLASS了。一个相对完整的解决方案需要提取META-INF/MANIFEST。MF文件以获取开始类属性。这一切都是相当混乱的实现为真正的。我当然希望我没有找到任何需要使用Spring Boot“idx”来指定JAR类路径顺序的服务。我想我们没有,但我真的不确定

我认为一个更干净的解决方案可能是让脚本使用zip实用程序“编辑”jar,为额外的jar添加另一个引导INF lib jar条目。不幸的是,这些容器在只读文件系统中运行,因此我无法将jar写入其中

如果有人能提出合理的策略,我将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    考虑到您正在处理一个只读文件系统,使用Spring Boot的^{}可能是最好的选择

    通过properties启动器,您可以使用loader.path系统属性来配置类路径BOOT-INF/classesBOOT-INF/lib中的jar总是包含在内,所以loader.path应该只指向附加的卷装入jar文件

    您可以将Spring Boot配置为构建一个jar,该jar使用带有GradleMaven的属性启动器