Gradle无法在依赖关系链中找到项目

时间:2016-12-25 10:49:25

标签: java eclipse gradle buildship

我在文件夹结构中有3个彼此相邻的Java项目:Proj1Proj2Proj3Proj1取决于Proj2,具体取决于Proj3

以下是他们的gradle.settings个文件:

rootProject.name = 'Proj3'
rootProject.name = 'Proj2'

include ':Proj3'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')
rootProject.name = 'Proj1'

include ':Proj2'
project(':Proj2').projectDir = new File(settingsDir, '../Proj2')

及其gradle.build个文件:

2

apply plugin: 'java'

dependencies {
    compile project(':Proj3')
}

1

apply plugin: 'java'

dependencies {
    compile project(':Proj2')
}

第二和第三个项目由Gradle建造得很好,但当我尝试建造第一个项目时,它会抱怨

  

评估项目':Proj2:'时出现问题。在项目':Proj2'中找不到具有路径':Proj3'的项目。

并指向行compile project(':Proj3')(在Proj2的构建中)。堆栈跟踪以

开头
  

org.gradle.tooling.BuildException:无法使用Gradle分发“https://services.gradle.org/distributions/gradle-3.1-bin.zip”获取“EclipseProject”类型的模型。

不知道为什么第二个项目在建造时可以找到第三个罚款,而在第一个项目建成时突然没有。为什么第一次关注第二次搜索第三次之后是否已经包含在“Project and External Dependencies”文件夹中。

如何让它发挥作用?

2 个答案:

答案 0 :(得分:0)

我认为,你为一个错误的项目配置提供了帮助。一个多模块项目只能有一个settings.gradle文件,这个文件应该包含所有模块。

所以结构可能是这样的:

RootProject/
  build.gradle
  settings.gradle
  Proj1/
    build.gradle
  Proj2/
    build.gradle
  Proj3/
    build.gradle

settings.gradle至少包含以下内容:

include 'Proj1', 'Proj2', 'Proj3'

在这种情况下,似乎您不需要一些额外的设置来更改模块名称或它的目录。您可以在official user guide

中阅读相关内容

答案 1 :(得分:0)

我发现无需发布任何内容或更改目录结构即可完成此操作。

项目3不需要settings.gradle或其中的依赖项build.gradle

项目2需要settings.gradle

include ':Proj3'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')

build,gradle

dependencies {
    compile project(':Proj3')
}

项目1需要settings.gradle

include ':Proj3', ':Proj2'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')
project(':Proj2').projectDir = new File(settingsDir, '../Proj2')

build,gradle

dependencies {
    compile project(':Proj2')
}

这就是关键!项目1虽然仅依赖于项目2,但也需要在其设置中包括和指定项目3。然后一切正常。

相关问题