Zon*_*Zon 4 gradle axon spring-boot fatjar
问题:
研究:在https://gitlab.com/ZonZonZon/simple-axon.git上,我编写了一个简单的Axon 应用程序,以表明使用Gradle 插件构建的JAR 工件在(运行时)不会自动配置 Axon beans罐)。虽然它在 Intellij 下运行良好。 com.github.johnrengelman.shadow
从终端中的项目根目录:
run gradle clean build shadowJar;
java -jar build/simpleaxon.jar;
Run Code Online (Sandbox Code Playgroud)
此处附有堆栈跟踪。我希望 Axon Autoconfiguration 默认提供 CommandBus、Snapshotter 等 Bean。
问题:如何在 fat jar 中自动配置默认的 axon beans?
因此,我进行了一些调查才知道出了什么问题,但我知道问题出在哪里。请注意,这不是 Axon 特定的东西,而是您正在使用的插件。
我运行了你的示例项目,确实得到了相同的结果;从来没有连接过轴突豆。这促使我一步步研究创建 fat JAR 的过程。首先是 Maven,然后是带有 Maven 的 Spring Boot,然后是带有 Spring Boot 的 Gradle,最后是您也提到的 Shadow 插件。
这一努力让我遇到了这个问题,其中指出“需要使用 META-INF 文件的项目需要将其添加到影子插件中,并且应该对此进行记录”。
通过此引用的部分如下:
import com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer
// Left out all other specifics from your 'build.gradle' file
shadowJar {
// Required for Spring
mergeServiceFiles()
append 'META-INF/spring.handlers'
append 'META-INF/spring.schemas'
append 'META-INF/spring.tooling'
transform(PropertiesFileTransformer) {
paths = ['META-INF/spring.factories' ]
mergeStrategy = "append"
}
setArchiveFileName("simpleaxon.jar")
getDestinationDirectory().set(new File(projectDir, "./build"))
}
Run Code Online (Sandbox Code Playgroud)
将这段逻辑添加到您的 build.gradle
文件后,我可以按预期运行您的示例项目。
归档时间: |
|
查看次数: |
203 次 |
最近记录: |