我有一个Gradle项目,它取决于另一个Gradle项目。我的项目结构是这样的:
project1/build.gradle
中的我想将project2
添加为依赖项:
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
sourceSets {
main {
java {
srcDirs = [ 'src' ]
}
}
}
include ':project2'
project(':project2').projectDir = new File("../project2")
dependencies {
compile project(':project2')
}
不幸的是,我总是收到此错误消息:
错误:(21,0)无法在根项目' project1'上找到参数[:project2]的方法include()类型为org.gradle.api.Project。
我正在使用Gradle 3.5,并且我在命令行(gradle build
)和IntelliJ中都收到此错误。我找到了一些关于同一问题的StackOverflow线程(this和this),但它们没有帮助。
Gradle multi-project documentation也没有提及可能导致错误的任何具体要求。
当我离开include
呼叫时,我收到的消息是在根项目中找不到项目路径。
我也尝试将依赖项移动到project1
的子目录,但没有成功。
我想知道我做错了什么,为什么显然没有其他人有同样的问题。我很感激提示。
注意:这不是Android项目。
答案 0 :(得分:5)
正如第一条评论所指出的那样,include
实际上需要进入settings.gradle
而不进入build.gradle
。这同样适用于更改projectDir
属性。
评论3给了我另一个想法。该项目可以包含在settings.gradle
中,如下所示:
includeBuild '../project2'
并在project1/build.gradle
中我将依赖项指定为
dependencies {
compile 'group:project2:version'
}
我一般都喜欢这样,因为它的代码更少,看起来更干净。然而,缺点是递归复合构建是不可能的。因此,如果project2
本身也是一个复合构建,那么这不会起作用。