在Github中包含.jar文件以保持一致性

时间:2014-07-12 20:32:11

标签: java git maven github gradle

我是使用github的新手,并且一直试图通过查看其他人的存储库来弄清楚这个问题,但我无法弄明白。当人们将github中的存储库分叉/克隆到他们的本地计算机以在项目上进行开发时,是否期望克隆的项目是完整的(即,它具有正确运行所需的所有文件)。例如,如果我以.jar文件的形式使用第三方库,我是否应该在存储库中包含该.jar文件,以便我的代码可以在有人克隆时运行,或者更好只是记下你正在使用这样的第三方库,用户需要在开始工作之前将这些库下载到其他地方。我只想弄清楚我的代码提交的最佳实践。

谢谢!

1 个答案:

答案 0 :(得分:5)

基本上就像克里斯所说的那样。

您应该使用具有包管理器的构建系统。这样,您可以指定所需的依赖项,并自动下载它们。我个人与maven和蚂蚁合作过。所以,这是我的经历:

Apache Maven:

关于maven的第一句话,它不是包管理器。它是一个构建系统。它只包含一个包管理器,因为对于java人来说,下载依赖项是构建过程的一部分。

Maven提供了一组很好的默认设置。这意味着您只需使用archtype插件来创建项目(" mvn原型:在cli上创建")。将原型视为项目的模板。您可以选择最适合您需求的原型。如果您使用某个框架,可能会有一个原型。否则,简单项目原型将是您的选择。之后你的代码转到src / main / java,你的测试用例转到src / test / java和" mvn install"将建立一切。依赖关系可以以maven的依赖关系格式添加到pom中。 http://search.maven.org/是查找依赖项的地方。如果你在那里找到它,你可以简单地将xml片段复制到你的pom.xml(由maven' s原型系统为你创建)。

根据我的经验,maven是获得具有依赖关系和测试执行设置的项目的最快方法。此外,我从来没有经历过在我的机器上工作的maven构建在其他地方失败(除了具有一年历史的Java版本的计算机)。魅力在于maven的默认生命周期(或构建周期)涵盖了您的所有需求。几乎所有东西都有很多插件。但是,如果你想做一些maven生命周期未涵盖的事情,你就会遇到大问题。但是,我只在混合语言项目中遇到过这种情况。一旦你需要除了java之外的任何东西,你就会搞砸了。

Apache Ivy:

我只和Apache Ant一起使用它。但是,Ivy是一个包管理器,ant提供了一个构建系统。 Ivy作为插件集成到ant中。虽然maven通常可以开箱即用,但Ant要求您手动编写构建文件。这允许比maven更大的灵活性,但是还有另一个要编写和维护的文件的奖励。基本上Ant文件与任何源代码一样复杂,这意味着您应该对它们进行注释和记录。否则,您将无法在以后维护构建过程。

Ivy本身就像maven的依赖系统一样简单。您有一个定义依赖项的xml文件。至于maven,你可以在maven central http://search.maven.org/找到合适的xml片段。

总结一下,如果你有一个简单的Java项目,我推荐使用Maven。 Ant适用于需要在构建中执行特殊操作的情况。