【发布时间】:2016-04-09 15:03:49
【问题描述】:
在build.gradle 脚本中,我将执行以下任务以将依赖项包含到可运行的应用程序 JAR 文件中。
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'org.somepackage.MyMainClass'
)
}
from configurations.compile.collect { entry -> zipTree(entry) }
}
但是,在多项目设置中,我在 JAR 文件中缺少一些依赖项。我最终发现没有包含在其他项目build.gradle 脚本中指定的任何依赖项,除非父项目也具有这些依赖项。
例如,项目 A 依赖于项目 B。项目 B 使用 Google Guava。当我将项目 A 部署到可运行的 JAR 文件时,不会包含 Google Guava,并且会出现运行时错误。如果项目 A 在其 build.gradle 脚本中冗余地指定了 Google Guava,那么它运行得很好。
如何修改上面的jar 任务以在多项目设置中包含依赖项?
【问题讨论】: