当前位置: 首页 > 知识库问答 >
问题:

了解gradle依赖关系

袁鸿雪
2023-03-14

我的结构如下:

项目A-

项目B-

编译项目B一切正常:

项目B/build.gradle:

dependencies {
  compile project(':ProjectC')
}

ProjectB/settings.gradle:

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

然而,在编译ProjectA时,它表示找不到ProjectC

ProjectA/build.gradle:

dependencies {
  compile project(':ProjectB')
}

ProjectA/settings.gradle:

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

这将显示以下错误:

其中:构建文件ProjectB\build.gradle

出了什么问题:

评估项目: ProjectB时出现问题。

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

我只能让它工作,包括ProjectA中的ProjectC。但这不是我想要的。

我也试图排除在ProjectA上,但没有工作

ProjectA/build.gradle:

dependencies {
  compile (project (':ProjectB')) {
    exclude module: ':ProjectC'
  }
}

但显示出同样的错误。

我怎样才能解决这个问题?

共有1个答案

田俊爽
2023-03-14

多项目生成不可级联。在多项目生成中,可以有一个或没有设置.gradle文件,但不能有多个。

除此之外,它并不像预期的那样工作,如果你从不同的目录调用Gradle,它甚至会变得更加混乱。Gradle向上(并向旁边查找称为master的目录)查找最近的settings.gradle,如果没有指定。然后它计算settings.gradle,并检查工作目录所在的项目是否是该settings.gradle文件中定义的多项目构建的一部分。如果是,则在多项目构建的上下文中执行,如果不是,则作为独立构建执行。

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

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

 类似资料:
  • 我正在尝试构建一个Bukkit插件。该插件还使用exp4j。最终结果需要在发布的jar中包含exp4j代码,但不包含Bukkit代码。 我按照这个答案的建议将依赖项复制到中,并使用这个答案将Bukkit声明为已提供。我的build.gradle现在看起来像这样: 这非常有效,我可以从命令行使用Gradle愉快地构建和运行项目。问题在于Intellij(或者可能是Gradle idea插件)无法识别

  • 问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间

  • 我有一个Gradle构建脚本,包含以下依赖项(其他不多):

  • 我在找一个android gradle Dependancie。 网站http://gradleplease.appspot.com/似乎停止工作。 有类似的网站吗? 否则,搜索特定库的提示?

  • 我试图使用gradle和以下指令指定一些jar依赖项: http://gradle.org/docs/current/userguide/dependency_management.html#sub:file_dependencies 当我从windows cmd运行gradle时,我得到: 我错过了什么?

  • 我已经在build.xml中构建了一个maven项目A,包括使用另一个pom导入所有测试依赖项。当我试图将maven项目A包含到gradle项目B中时,它给出了错误。 我尝试使用[--info]首先尝试正确的存储库URL并更新jar [缓存的资源是最新的]。但最终它会尝试其他人并抛出错误。 如何从gradle构建文件中传递配置文件名? 感谢您的帮助。 项目A- 项目B- 错误消息