我有一个 Gradle 项目,它依赖于另一个 Gradle 项目。我的项目结构是这样的:
- 项目1
- 构建.gradle
- 设置.gradle
- src/
- 项目2
- 构建.gradle
- 设置.gradle
- src/
在 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')
}
不幸的是,我总是收到此错误消息:
Error:(21, 0) Could not find method include() for arguments [:project2] on root project 'project1' of type org.gradle.api.Project.
我使用的是 Gradle 3.5,在命令行 (gradle build
) 和 IntelliJ 中都收到此错误。我发现了一些关于同一问题的 StackOverflow 线程( this 和 this ),但它们没有帮助。
Gradle multi-project documentation也没有提到我可能遗漏的任何可能导致错误的具体要求。
当我保留 include
调用时,我收到一条消息:在根项目中找不到项目路径。
我还尝试将依赖项移至 project1
的子目录,但没有成功。
我想知道我做错了什么以及为什么显然没有多少其他人遇到同样的问题。如果有提示,我将不胜感激。
注意:这不是 Android 项目。
最佳答案
正如第一条评论所指出的,include
实际上需要进入settings.gradle
而不是build.gradle
。这同样适用于更改 projectDir
属性。
评论3也给了我另一个想法。该项目可以包含在 settings.gradle
中,如下所示:
includeBuild '../project2'
在 project1/build.gradle
中,我将依赖项指定为
dependencies {
compile 'group:project2:version'
}
我通常更喜欢这个,因为它的代码更少并且看起来更干净。然而,缺点是递归复合构建是不可能的。因此,如果 project2
本身也是一个复合构建,则这将不起作用。
关于java - 尝试将 Gradle 项目包含为依赖项,但 include() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43821336/