Gradle包括战争中另一个项目生产的jar

时间:2016-10-04 03:36:26

标签: gradle build.gradle

目前我有两个使用gradle build.gradle的项目。第一个是创建一个胖jar文件,我想将其包含在war文件中。我认为编译它就足够了,但它似乎并没有在我的war文件的/ lib目录中结束。任何人都有想法我很陌生。

.field_wrapper

第二次项目战是否需要在提供的运行时间?或者我应该从本地maven仓库中的其他项目发布jar并以这种方式包含它吗?

2 个答案:

答案 0 :(得分:2)

War任务本质上就像一个关于它在战争中打包的东西的CopyTask,所以documentation on working with files很有用。从本质上讲,我认为你需要像(未经测试的):

from fileTree('JarProject/build/libs') {
    into("lib")
}

话虽如此,使用mavenLocal()并在那里发布也有效,但是当战争包含来自本地的一些旧版本时,它会导致意想不到的结果,如上所述从文件系统中明确地拾取jar更好。

我认为优雅的解决方案是使用multi project buildsproject 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