Gradle 收集多项目中的所有jar依赖并构建一个ear

Gradle gather all jar dependencies in multi project and build a ear

我是 gradle 的新手,我正在努力实现以下目标 我已经设置了一个多项目构建,具有以下结构 根: :commonjar (java-库) :war1 (war) :war2 (war) :externaljars(非托管 jar 的本地存储库) :libs (耳朵)

我想自动收集 commonjar、war1 和 war2 的所有运行时依赖项,并生成一个可部署的 ear (libs),其中所有 jar 都存储在 libs 中。ear/lib

我找到了一种使用 taks 定义收集所有 jar 的方法,如下所示:

task copyDeps(type: Copy) {
    from(subprojects.configurations.runtime) 
    into project.file(libDirName)
}

但无论我将罐子存放在哪里,"ear" 任务都不会拾取它们。

只是为了解释一下,我需要制作一个虚拟耳朵,只有 jar 可以在 IBM Websphere 应用程序服务器上进行远程部署和创建共享库定义。

有什么好的建议可以收集并打包整个项目中使用的所有 jar(也可以传递)? 谢谢

您可以简单地配置 ear 任务以包含您想要的依赖项,例如

ear {
    duplicateStrategy = DuplicateStrategy.EXCLUDE
    lib {
        from rootProject.subprojects.configurations.runtime
    }
}