我的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