如何在 Eclipse 工作区中解决从一个 gradle 项目到另一 gradle 项目的依赖关系?

2024-03-05

我的 Eclipse 工作区中有两个 gradle 项目。我们称它们为“A”和“B”。其中“A”取决于“B”。项目“A”在其 build.gradle 文件中声明了对“B”的依赖,如下所示:

 dependencies {
    compile 'some-group:B:1.0.0'
    ...
}

由于我将在这两个项目中进行修改,因此如果 gradle 能够解决“B”对 eclipse 项目中的二进制文件的依赖关系(而不是从某个存储库下载 B.jar),那就太好了。

幸运的是我发现Eclipse/STS中有这样的功能(根据this https://stackoverflow.com/questions/26282985/is-it-possible-for-gradle-projects-in-eclipse-sts-to-resolve-dependencies-to-oth问题)。我通过检查“将 jar 重新映射到 Gradle 项目”(在 Eclipse 中:窗口 -> Gradle 首选项)来启用此功能。在执行 Gradle -> Refresh All(在项目“A”中)之后,我在项目“A”类路径中包含以下内容:

  • C:\eclipse-workspace\B\bin(项目“B”的二进制文件所在的路径)。
  • 项目 B 的所有传递依赖项。
  • 项目“A”中声明的所有依赖项(及其传递依赖项)。

到目前为止,一切都很好 :)

但过了一段时间,我意识到我在类路径中得到的东西比我预期的要多一些。 我还在项目“A”类路径中得到了这个:

  • “B/src/test/java”的二进制文件
  • 项目“B”的“testCompile”依赖项。

从项目“A”访问项目“B”的“测试”代码和 testCimple 依赖项是没有意义的。无论如何我可以避免这种情况吗?

我尝试设置不同的输出文件夹src/main/* and src/test/*在项目“B”中,但随后这两个文件夹都被添加到项目“A”的类路径中。

我之前一直在 Eclipse 中使用 Maven,并且引用同一 Eclipse 工作区中的依赖关系效果非常好。


多项目构建就是您的答案。

最简单的方法是有一个像这样的目录结构:

root
    |-> project A
    \-> project B

在root中,您将有一个build.gradle文件和一个settings.gradle文件,在settings.gradle中您列出了项目A和项目B。任何常见的配置都可以放入根build.gradle中,然后在项目B依赖项中您可以有以下内容:

dependencies {
    compile project(':project A')
}

然后,如果您更改项目 A 并构建项目 B,项目 A 将重新编译,否则 gradle 将使用之前编译的版本。

See https://gradle.org/docs/current/userguide/multi_project_builds.html https://gradle.org/docs/current/userguide/multi_project_builds.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Eclipse 工作区中解决从一个 gradle 项目到另一 gradle 项目的依赖关系? 的相关文章

随机推荐