Spring boot 如何使用SpringBootJarLauncher的自定义子类?
我有一种情况,我所需要的一个依赖项jar中还嵌入了一个旧版本的依赖项(uber-jar样式) 遗憾的是,嵌入式依赖项与其他一些依赖项不兼容 我使用自定义版本的Spring boot 如何使用SpringBootJarLauncher的自定义子类?,spring-boot,gradle,spring-boot-gradle-plugin,Spring Boot,Gradle,Spring Boot Gradle Plugin,我有一种情况,我所需要的一个依赖项jar中还嵌入了一个旧版本的依赖项(uber-jar样式) 遗憾的是,嵌入式依赖项与其他一些依赖项不兼容 我使用自定义版本的com.springframework.boot.loader.JarLauncher想出了一个策略,在这里,我可以通过重写postProcessClassPathArchives方法来操作类路径中jar文件的顺序 这个策略是基于,但在我的例子中,不是确保classes文件夹首先出现在类路径中,而是首先推送不兼容嵌入式类的兼容版本 引用的博
com.springframework.boot.loader.JarLauncher
想出了一个策略,在这里,我可以通过重写postProcessClassPathArchives
方法来操作类路径中jar文件的顺序
这个策略是基于,但在我的例子中,不是确保classes
文件夹首先出现在类路径中,而是首先推送不兼容嵌入式类的兼容版本
引用的博客文章将JarLauncher
的子类放在项目本身中,但在我的例子中,这种情况会发生在多个项目中,因此我想将JarLauncher
的自定义子类分解到它自己的项目中,并通过一些适当的maven存储库将其作为一个独特的依赖项提供
这篇博文还使用gradlecopySpec
将自定义启动程序类从${buildDir}/classes
复制到spring引导jar的根目录中,以便负责加载清单中作为主类调用的类的类加载器可以访问它
所以,我的问题是关于实现类似结果的选项,但是使用嵌入在依赖项jar中的自定义启动器
我想知道是否可以从位于启动jar根目录下的jar文件中引用自定义启动器,或者是否需要提取内容并将离散类移动到那里
不管怎样,我只熟悉gradle的基础知识,不知道如何通过gradle技术实现这两种选择
感谢您的指导 经过一些研究和修补,我想出了以下解决方案:
configurations {
bootHelpr { transitive = false }
}
dependencies {
//...
bootHelpr 'com.github.the-watchmen:boot-helpr:1.0.0'
}
bootJar {
with copySpec {
from(zipTree(configurations.bootHelpr.singleFile))
}
}
其中boot helpr
是包含自定义JarLauncher
的依赖项
我认为自己是个新手,所以可以自由地发表更多的惯用解决方案;p>