我已经用Spring的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 -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的Gradle插件在bootRepackage任务中没有包含它。
Eclipse中也存在这种依赖关系,并且可以从那里运行项目。
知道为什么它不见了吗?
发布于 2014-03-13 17:16:03
这看起来像是Spring中的一个bug。我开了一个问题这样我们就可以调查了。谢谢你提请我们注意。
发布于 2014-03-20 02:34:38
下面是一个快速修复,而错误是解决的。在您的gradle.build文件中尝试以下操作
jar {
baseName = 'gs-accessing-data-rest'
version = '0.1.0'
into('lib') {
from 'oraDrv'
}}
其中oraDrv是一个文件夹,其中有您的自定义jars或丢失的jars。假定oraDrv相对于build.gradle文件位置。
https://stackoverflow.com/questions/22385136
复制相似问题