6

2个gradle项目,A和B,其中A对定义的B有编译依赖。为 maven 和 gradle 项目启用了 JAR 的重新映射。我尝试过启用和禁用自定义工具模型。我在 init.d 目录下的文件中定义了本地存储库。

问题1:为什么在解决项目A的依赖项时,会收到项目B的依赖项未解决的错误?即使 B 没有部署到任何存储库,本地工作区解析也应该启动并以与 maven 项目相同的方式解决它(顺便说一句)。

问题 2:除了在 build.gradle 中定义的组和版本之外,B 是否需要有任何特殊的东西才能对工作区分辨率可见?

我正在使用 eclipse 4.4.1 和 Gradle IDE 3.7.0.201503301651-CI-B39 运行。我也尝试过使用相同 Eclipse 版本的稳定版本。

使用 --debug 运行时,我可以看到 gradle 试图从本地存储库中解析而不是放弃?

4

1 回答 1

6

您的两个问题的答案归结为一个事实,即您可能从 maven / m2e 知道它没有工作区分辨率。

依赖关系的“重新映射”不会“解决”工作空间中的项目,因为它将工作空间视为某种存储库。

相反,依赖项通常由 Gradle 从您在构建脚本中定义的任何存储库中解析。然后该工具将尝试确定某些已解析的jar 依赖项是否与您的工作区中的项目相对应。然后,它用项目依赖项“替换”(或“重新映射”)jar 依赖项。

因此,这意味着您必须至少将 jar 发布到可以在重新映射开始之前解决它的地方。(从那时起,您不必重新发布您的 jar,因为已解决并不重要jar 不是“最新的”)

其他一些可能有用的知识...

  • 重新映射仅适用于工具管理的依赖项,因此您必须启用“依赖项管理”。

  • 有一个错误使它不适用于“平面文件”回购。可能还有其他情况受到类似错误的影响。如果遇到此类错误,您应该报告它们。(尽管我自己并没有太多运气让 Gradle 人注意到平面文件错误)

于 2015-04-14T18:30:11.747 回答