目前我有两个使用gradle build.gradle的项目。第一个是创建一个胖jar文件,我想将其包含在war文件中。我认为编译它就足够了,但它似乎并没有在我的war文件的/ lib目录中结束。任何人都有想法我很陌生。
.field_wrapper
第二次项目战是否需要在提供的运行时间?或者我应该从本地maven仓库中的其他项目发布jar并以这种方式包含它吗?
答案 0 :(得分:2)
War任务本质上就像一个关于它在战争中打包的东西的CopyTask,所以documentation on working with files很有用。从本质上讲,我认为你需要像(未经测试的):
from fileTree('JarProject/build/libs') {
into("lib")
}
话虽如此,使用mavenLocal()
并在那里发布也有效,但是当战争包含来自本地的一些旧版本时,它会导致意想不到的结果,如上所述从文件系统中明确地拾取jar更好。
我认为优雅的解决方案是使用multi project builds和project level dependencies。您可以将这两个构建作为同一Gradle构建的单独项目,并添加" jar项目"作为常规compile
依赖项。
答案 1 :(得分:0)
你是如何宣布依赖的?我假设您有一个包含子项目A和B的多项目构建,两者都使用War插件。我使用Gradle 2.4进行了实验,如果我像这样声明B / build.gradle:
apply plugin: 'war'
dependencies {
compile project(':A')
}
然后B.war包含WEB-INF / lib / A.jar。如果您正确遵循Gradle War插件的惯例(将Web资源放在A / src / main / webapp /和A / src / main / resources /中的代码相关资源),那么A.jar应该包含您想要的内容。
请参阅this