我的 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(使用前将#替换为@)