【发布时间】:2016-08-13 12:05:52
【问题描述】:
我正在迁移到 Gradle 作为我的 Java 项目构建工具。 我的主要项目 (A) 依赖于其他项目 (B 和 C)。
目前这些项目中的每一个都单独在 CVS 中,当我想编译 A 时,我必须检查 A,在 A 中创建一个名为 B 的子目录,在其中检查 B。C 也是如此。
我将迁移到可以发布 B 和 C 的存储库管理器 (nexus)。发生这种情况时,模块 A 可以只依赖 B 和 C,它可以从 nexus 获取。
但是,如果我不想发布 B 和 C(出于测试目的)并且我想使用来自 B 和 C 的最新代码构建 A 而不将其提交到 nexus,则会出现困难。
我最初的想法是为 B 和 C 构建 jar 并将其拉入 A 的“lib”文件夹中。但是我确信有更好的方法。
在 maven 中,我可以执行“mvn clean install”,将 B 和 C 安装到我的本地 maven 缓存中。然后 A 会在那里寻找合适的罐子。
但我仍然不确定这是最好的方法。我查看了 gradle 子项目,但我不完全理解它们。子模块如何在 SCM 中处理(我是否还需要使用 git 子模块?)
对于这种情况的最佳做法,我希望能提供一些指导。 谢谢
编辑:
下面来自 Vyacheslav Shvets 的回复是我迄今为止找到的最准确的答案。 还有另一种方法可以使用 maven 样式的依赖项切换 gradle 项目依赖项。这涉及到 https://docs.gradle.org/current/userguide/dependency_management.html#sec:project_to_module_substitution
中描述的依赖替换这可以包裹在一个:
if(project.hasProperty("someSwitch")){
configurations.all{.....
....
}
}
这种方法的用法是:
gradle build -Psomeswitch
【问题讨论】:
标签: gradle build.gradle git-submodules