繁体   English   中英

使用spring-boot gradle-plugin构建的可执行jar缺少依赖项

[英]Executable jar built with spring-boot gradle-plugin missing dependency

我有一个可执行的JAR,我用Spring Boot的Gradle插件构建。 它在构建文件中具有以下依赖项:

的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中的一个bug。 我已经打开了一个问题,以便我们进行调查。 感谢您引起我们的注意。

以下是快速修复,而错误已解决。 在你的gradle.build文件中试试这个

jar {
baseName = 'gs-accessing-data-rest'
version = '0.1.0'
into('lib') {
    from 'oraDrv'
   }

}

其中oraDrv是一个文件夹,您可以在其中拥有自定义jar或丢失的jar。 假设oraDrv是build.gradle文件位置的相对位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM