2014-03-13 51 views
4

我有一个可执行JAR,使用Spring Boot的Gradle插件构建。它在构建文件以下依赖性:使用spring-boot gradle-plugin构建的可执行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罐子,只有其他的ActiveMQ罐子:

[] 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时,我得到一个异常,从这个依赖关系的类canno T为找到:

java.lang.ClassNotFoundException: org.apache.activemq.protobuf.Message 

在生成的依赖被下载,它可以在我的gradle这个缓存中找到,它似乎是出于某种原因春天启动的摇篮插件不会在bootRepackage任务中包含它。

这个依赖关系在Eclipse中也存在,项目可以从那里运行。

有关它为什么会丢失的任何想法?

回答

1

这看起来像是一个Spring Boot中的错误。我打开了一个issue,以便我们可以进行调查。感谢您将它引入我们的关注。

0

以下是一个快速解决方案,同时解决了该错误。在gradle.build文件

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

}

其中oraDrv是在你有你的自定义的罐子或瓶子丢失一个文件夹 试试这个 。假定oraDrv是相对于build.gradle文件的位置。