确定我的项目需要那些jar文件的最佳实践是什么?我应该将依赖项上传到我的GitHub存储库(丑陋)吗?还是use a Maven-like tool for that?
或者有没有办法链接另一个git存储库中的文件? Apache provides git repositories for they libraries.他们是只读的,但我是o.k.因为,我只想使用罐子.坏的是它们包含所有的源,我只关心编译的jar. It seems我们不能git子模块只是一个文件.
解决方法
>声明式和基于组件的,您声明(描述)项目所需的组件(jar,exe,其他二进制文件)(编译,执行,部署等),并使用第三方工具(如Maven / Nexus)按需提供这些组件.
因此,它们不会在您的仓库中进行版本控制.它们被声明/描述(就像在pom.xml中一样,如果你使用Nexus)
另见“Difference between Git and Nexus?”.
>包容性和基于系统,您可以使用其他项目源/二进制文件完成项目,以便在克隆步骤后立即获取所需的所有内容(无需调用第三方工具或执行任何操作:每个你系统的其他部分).
使用Git,特别是如果那些“其他部分”在git仓库中(如apache libs one),那么你会将这些子仓库声明为主仓库的submodules.
这样,您在主仓库中保留的是special entry (gitlink,mode 160000)引用另一个仓库的特定SHA1(但您可以制作submodule follow a branch too,有点像svn外部).
使用sparse checkouts in submodules(如this example),您甚至可以更新这些模块,只检查您想要的回购部分(例如罐子,而不是源).
请注意,您不应该在GitHub仓库中存储您将生产的任何交货(如您自己的罐子).
您可以将这些交货关联到GitHub releases.