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



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

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

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

幸运的是,我发现Eclipse/STS中有这样的功能(根据这个问题)。我通过检查"Remap jars to Gradle Projects"(在Eclipse中:Window->Gradle preferences)来启用此功能。在做了Gradle->RefreshAll(在项目"a"中)之后,我在项目"B"类路径中得到了这个:

  • C:eclipse-workspaceBbin(项目"B"的二进制文件所在的路径)
  • 项目B的所有可传递依赖项
  • 项目"A"中声明的所有依赖项(及其可传递依赖项)

到目前为止还不错:)

但过了一段时间,我意识到我在类路径中得到了比预期更多的东西。我在项目"A"类路径中也得到了这一点:

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

从项目"A"访问项目"B"的"测试"代码和testCimpile依赖项是没有意义的。我能避免这种情况吗?

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

我以前在Eclipse中使用过Maven,并且在同一个Eclipse工作区中引用依赖关系非常有效。

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

最简单的方法是拥有这样的目录结构:

root
    |-> project A
    -> project B

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

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

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

请参阅https://gradle.org/docs/current/userguide/multi_project_builds.html

最新更新