Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解梯度依赖_Java_Gradle_Build.gradle - Fatal编程技术网

Java 理解梯度依赖

Java 理解梯度依赖,java,gradle,build.gradle,Java,Gradle,Build.gradle,我的结构如下: 项目A->取决于项目B 项目B->取决于项目C 编译projectB一切正常: ProjectB/build.gradle: dependencies { compile project(':ProjectC') } dependencies { compile project(':ProjectB') } dependencies { compile (project (':ProjectB')) { exclude module: ':ProjectC

我的结构如下:

项目A->取决于项目B

项目B->取决于项目C

编译projectB一切正常:

ProjectB/build.gradle:

dependencies {
  compile project(':ProjectC')
}
dependencies {
  compile project(':ProjectB')
}
dependencies {
  compile (project (':ProjectB')) {
    exclude module: ':ProjectC'
  }
}
ProjectB/settings.gradle:

include ':ProjectC'
project(':ProjectC').projectDir = new File(settingsDir, '../ProjectC')
include ':ProjectB'
project(':ProjectB').projectDir = new File(settingsDir, '../ProjectB')
然而,在编译ProjectA时,它表示找不到ProjectC

ProjectA/build.gradle:

dependencies {
  compile project(':ProjectC')
}
dependencies {
  compile project(':ProjectB')
}
dependencies {
  compile (project (':ProjectB')) {
    exclude module: ':ProjectC'
  }
}
ProjectA/settings.gradle:

include ':ProjectC'
project(':ProjectC').projectDir = new File(settingsDir, '../ProjectC')
include ':ProjectB'
project(':ProjectB').projectDir = new File(settingsDir, '../ProjectB')
这将显示以下错误:

其中: 生成文件ProjectB\Build.gradle

出了什么问题:

评估项目“:ProjectB”时出现问题

在项目:ProjectB中找不到路径为:ProjectC的项目

我只能将ProjectC包含在ProjectA中。但这不是我想要的

我也试着排除ProjectA,但没有成功

ProjectA/build.gradle:

dependencies {
  compile project(':ProjectC')
}
dependencies {
  compile project(':ProjectB')
}
dependencies {
  compile (project (':ProjectB')) {
    exclude module: ':ProjectC'
  }
}
但显示出同样的错误


如何解决此问题?

对于gradle,您应该只使用一个settings.gradle文件。看


另外,只需遵循gradle多项目文档。

多项目构建是不可级联的。在多项目生成中,可以有一个settings.gradle文件,也可以没有,但不能有多个

除此之外,它并没有像预期的那样工作,如果您从不同的目录调用Gradle,它甚至会变得更加混乱。Gradle在名为master的目录中查找最接近的设置。如果未指定任何设置,则为Gradle。然后评估settings.gradle并检查工作目录所在的项目是否是该settings.gradle文件中定义的多项目生成的一部分。如果是,则在多项目构建的上下文中执行,如果不是,则作为独立构建执行

这意味着,如果您从ProjectA内部调用Gradle,您的构建可能与从ProjectB内部调用Gradle的构建完全不同,配置可能也不同

如果要将多个多项目生成组合到一个生成中,则应改用GradleBuild任务或复合生成。在这两种情况下,子构建都是完全独立的,并且本身可以是多项目构建。使用哪一个取决于具体的用例