java如何配置gradle脚本以处理具有根级别构建的多项目
这可能吗
A (folder)
-B (independent project)
-C (independent project)
-D (independent project) and depends on B and C
注意:我还需要一个根级别的gradle来构建文件夹级别的所有项目
这就是我到目前为止得到的
(build.gradle)根级别
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
}
allprojects {
apply plugin: 'maven-publish'
repositories {
mavenLocal()
mavenCentral()
}
}
A(settings.gradle)根级别
rootProject.name = 'A'
include "B"
include "C"
include "D"
独立的项目构建非常简单。当我尝试构建项目D时,我被卡住了
dependencies {
api project(':B')
api project(':C')
}
基本上gradle希望B和C在D以下,我明白了。但是,我怎样才能让它按现在的方式工作呢
回答:在设置中添加了以下内容。D的渐变
rootProject.name = 'D'
include 'B'
project(':B').projectDir = file('../B')
include 'C'
project(':C').projectDir = file('../C')
# 1 楼答案
项目结构完全独立于项目依赖关系。您可以使用任意项目名称和项目目录定义任何项目之间的任何有效(例如非循环)依赖关系
不Gradle没料到。实际上,您当前的设置应该可以正常工作。所有涉及的(子)项目必须在一个文件中注册。传递给
include
的只是一个项目名称,不一定与项目的实际位置有关。方法include
使用约定,通过将项目名称转换为路径来推断项目的位置,但它可能会发生更改,如the documentation所示:如注释中所述,第一个示例将创建两个项目,因为
'foo:bar'
是一个项目路径,需要一个名为foo
的项目才能存在。您还可以使用includeFlat
创建默认路径的项目,该路径从根目录的父目录(即根项目的项目目录)开始