程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了构建后将jar添加到springboot jar的类路径的策略大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决构建后将jar添加到springboot jar的类路径的策略?

开发过程中遇到构建后将jar添加到springboot jar的类路径的策略的问题如何解决?下面主要结合日常开发的经验,给出你关于构建后将jar添加到springboot jar的类路径的策略的解决方法建议,希望对你解决构建后将jar添加到springboot jar的类路径的策略有所启发或帮助;

我从事大量在容器中运行 SpringBoot 的服务。我们构建了一个“Spring Boot Jar”,并以“java -jar ...”作为容器中的启动脚本执行。

我被要求实现一些概念上看起来很简单的东西,但我发现它可能非常粗糙。

需要发生的是脚本需要检查映射卷中的特定 jar 文件,如果存在,则使用增强的类路径运行 spring 引导服务,包括额外的 jar。

我意识到这很混乱,因为当您使用“java -jar”执行 Spring Boot jar 时,您不能只是“增加类路径”。如果“-jar”在命令行中,它将忽略所有“-cp”选项。

这个简单的事实需要检查对原始 jar 进行大量内省的可能性,至少获取 BOOT-INF/lib jar 的整个列表,并构建一个新的类路径字符串,包括所有这些 jar 以及附加的jar,更不用说 BOOT-INF/类。一个比较完整的解决方案需要提取 meta-inf/MANIFEST.MF 文件来获取 Start-Class 属性。这一切都很难真正实现。我当然希望我没有找到任何需要使用 Spring Boot“IDx”来指定 jar 的类路径顺序的服务。我认为我们没有,但我真的不确定。

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

我很感激人们提出的任何合理的策略。

解决方法

鉴于您正在处理只读文件系统,使用 Spring Boot 的 PropertiesLauncher 可能是您的最佳选择。

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

您可以配置 Spring Boot 来构建一个使用带有 Gradle 和 Maven 的属性启动器的 jar。

大佬总结

以上是大佬教程为你收集整理的构建后将jar添加到springboot jar的类路径的策略全部内容,希望文章能够帮你解决构建后将jar添加到springboot jar的类路径的策略所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。