具有项目编译依赖项的 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 项目无法编译