在我工作的地方,我们使用名为 apache Ivy 的工具进行依赖项管理。但是,我最近一直在开发一个我自己的项目,它有多个存储库,因此,我正在使用一个 git super 项目来维护所有这些项目。 git 子模块对我来说很棒,到目前为止我更喜欢它们而不是 Ivy。以下是我喜欢 Ivy 的主要优点:
- 每当您对两个或多个相互依赖的存储库进行更改时,您只需提交到 super 项目即可,因此很明显什么依赖于什么。在 Ivy 中,你必须发布一个全新的版本,这很烦人。
- 在 super 项目中更容易更好地跟踪您的更改。据我所知,Ivy 不会很好地跟踪您对版本的更改。
- Git 比 Ivy 有更多的支持
- 你只需要了解一种工具,GIT!!!
但是,我的公司拒绝接触 git 子模块/ super 项目。我也一直在做一些研究,似乎很多人不喜欢 git 子模块,并且它不被认为是一个好的“依赖管理”工具。谁能帮我理解为什么?
最佳答案
Apache Ivy 等依赖管理器的 killer 级功能可能是传递依赖 解决和冲突管理。使用 git 子模块无法做到这一点。
来自 Apache Ivy features页:
Imagine a component that's often reused by a software team, and that this component has dependencies of its own. Without a good dependency management tool, each time this component is reused, all its dependencies must be repeated. With Apache Ivy, it's different: simply write a dependency file once for the component, and benefit from the work already done anytime this component is reuse.
我认为重要的另一个功能是:
下载已经编译好的包,而不是每次都编译它们
依赖报告
总而言之,只有当你的依赖树确实存在并且编译依赖代码很便宜时,我才会建议使用 git 子模块。
关于Git 子模块与依赖管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142414/