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