我有一个使用 Spring Boot 的 Gradle 插件构建的可执行 JAR。它在构建文件中具有以下依赖项:
build.gradle
compile('org.apache.activemq:activemq-client:5.9.0')
compile('org.apache.activemq:activemq-broker:5.9.0')
compile('org.apache.activemq:activemq-kahadb-store:5.9.0')
compile('org.apache.activemq.protobuf:activemq-protobuf:1.1')
问题是在我跑完之后
./gradlew clean build
创建的工件不包含 activemq-protobuf
jar,仅包含其他 activemq jar:
[] jar -tf build/libs/application-0.1.0.jar | grep activemq
lib/activemq-client-5.9.0.jar
lib/activemq-broker-5.9.0.jar
lib/activemq-kahadb-store-5.9.0.jar
lib/activemq-openwire-legacy-5.9.0.jar
所以当我尝试运行 jar 时,我得到一个异常,即无法找到来自该依赖项的类:
java.lang.ClassNotFoundException: org.apache.activemq.protobuf.Message
在构建过程中,依赖项被下载并且可以在我的 gradle 缓存中找到,似乎出于某种原因,Spring Boot 的 Gradle 插件在 bootRepackage
任务期间没有包含它。
Eclipse 中也有此依赖项,可以从那里运行项目。
关于它丢失的原因有什么想法吗?
最佳答案
这看起来像是 Spring Boot 中的一个错误。我打开了一个issue以便我们进行调查。感谢您提请我们注意。
关于java - 使用 spring-boot gradle-plugin 构建的可执行 jar 缺少依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385136/