繁体   English   中英

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

[英]Including .jar files in Github for consistency

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

谢谢!

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

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

Apache Maven:

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

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

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

Apache常春藤:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM