具有项目编译依赖项的 Gradle 嵌套多项目

Posted

技术标签:

【中文标题】具有项目编译依赖项的 Gradle 嵌套多项目【英文标题】:Gradle nested multi-projects with project compile dependencies 【发布时间】:2012-11-15 17:53:39 【问题描述】:

我有一个与Gradle Multi-Module Project Setup 相同的问题,但我必须使用项目编译依赖项来构建,并且不能使用上述问题中作为解决方案提供的库(jar)依赖项解决方案。

Root
|__ P1
|   |_ PP1
|   |_ PP2
|
|__ P2
   |_PP3
   |_PP4

PP1、PP2、PP3、PP4是子项目,每个都有自己的build.gradle文件; P1 和 P2 也有 build.gradle 和 settings.gradle 文件。

如何在 PP3 的 build.gradle 文件中将 PP1 声明为编译依赖项?

apply plugin: 'java' 
dependencies 
    compile('P1:PP1') //does not work
    compile group: 'P1', name: 'PP1', version: '0.1' // jar library dependency not an option

    compile('ant_target')? //follow up question - an ant target as a dependency

我正在运行 Gradle v1.2

【问题讨论】:

Is it possible to set up a gradle project with more than 2 levels?的可能重复 【参考方案1】:

一个构建只能有一个 settings.gradle 文件。假设settings.gradle 位于根目录中并包含如下项目:

include "P1:PP1"

你可以像这样添加编译依赖:

dependencies 
    compile(project(":P1:PP1"))

有关详细信息,请参阅Gradle User Guide 中的“多项目构建”一章。

【讨论】:

谢谢!在一个相关问题上,是否可以在 build.gradle 依赖项闭包中将 Ant 目标声明为依赖项?场景:P2的build.gradle文件导入P2的build.xml; “myAntTask”是 build.xml 中的一个目标;项目 settings.gradle 有include 'P1:PP1', 'P2';我可以使用 Gradle 执行 P2 的“myAntTask”ant 目标。坚持我的编译依赖要求,我如何在 P1 的 build.gradle 中将“myAntTask”声明为编译依赖?我正在慢慢地将我的 Ant 构建项目转换为 Gradle,同时还添加了新的 Gradle 项目 听起来你在混淆任务依赖和工件依赖。 没有回答“如何在 PP3 的 build.gradle 文件中将 PP1 声明为编译依赖项?”的问题。此解决方案仅显示 P1 和 PP1。 迟到了,但对于任何新来的人:Gradle 4.10 现在支持嵌套(复合)构建,因此我们现在可以在构建中构建构建等,每个构建都有自己的设置文件 @AndyDingfelder 真的吗?似乎仍然只允许单个settings.gradle

以上是关于具有项目编译依赖项的 Gradle 嵌套多项目的主要内容,如果未能解决你的问题,请参考以下文章

如何使用spring boot plugin 2.0.x从一个具有不同依赖项的gradle项目生成2个jar

如何使用 Gradle 创建具有实现依赖项的可执行胖 jar

具有 FreeMarker 2.3.23 依赖项的 Maven 项目无法编译

用于仅测试依赖项的 Gradle 变体感知依赖项管理

如何找到跨文件重命名和重新排序添加特定 Gradle 构建依赖项的 Git 提交?

Gradle 多项目在根项目中定义依赖项