2

我有 3 个 Java 项目在文件夹结构中彼此相邻Proj1Proj2Proj3. Proj1取决于Proj2,它取决于Proj3

这是他们的settings.gradle文件:

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”类型的模型。

不知道为什么第二个项目在建成时可以找到第三个罚款,而在第一个项目建成时突然就不行了。为什么第一个关心第二个如何在第三个已经包含在“项目和外部依赖项”文件夹中之后搜索它。

我如何使它工作?

4

2 回答 2

1

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

所以结构可能是这样的:

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

并且settings.gradle应该至少包含以下内容:

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

在这种情况下,您似乎不需要进行一些额外的设置来更改模块名称或其目录。您可以在官方用户指南中了解它。

于 2016-12-26T07:16:39.290 回答
0

我找到了无需发布任何内容或更改目录结构的方法。

项目 3 中不需要 asettings.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。然后一切正常。

于 2017-03-01T16:40:34.127 回答