我应该将jar依赖项放在共享仓库或源文件上吗?

时间:2010-12-26 09:09:37

标签: git scala resources

我们有一个包含很少源文件(在Scala和Java中)的Scala项目,以及各种二进制格式(jar和DLL)中的一些依赖项。我想知道我们的共享git repo应该是什么。只有源文件(开发人员必须下载或以某种方式解析依赖项本身)或源文件和依赖项? 我可以补充说,依赖项都是第三方,可以免费下载。

4 个答案:

答案 0 :(得分:7)

我们更喜欢将.jar文件存储在同一个存储库中,因为

  • 它们很少更新,因此旧库的开销不多
  • 我们更喜欢自包含的捆绑包,而不想设置自己的Maven服务器

答案 1 :(得分:6)

我真的建议在Git回购中包含jar和dll:它会使快速回复相当大,未来git clone将不会那么容易与简单的存储库一样(如“无二进制文件”)。

我会设置一个Nexus回购和manage your dependencies through sbt

答案 2 :(得分:4)

从其他地方下载依赖项可能会有问题:我认为,您无法保证下载的版本仍然是项目所需的版本。如果依赖项有进一步的开发,它们的接口可能会发生变化,你就会遇到问题。

因此,我建议将依赖项放入git repo ,以确保您使用的是一致版本的依赖项。他们不会每周都改变(他们不应该改变),所以回购不会那么快。磁盘空间很便宜。所以这不是一个大问题。

如果你想节省磁盘空间,可以在一个文件中压缩依赖项(由于jar已经存档,因此不会产生那么大的影响。)

答案 3 :(得分:1)

这里有两个问题:

  1. 在开发期间管理依赖关系
  2. 向用户分发依赖关系
  3. 如果所有开发人员都能够一致地访问互联网,并且不在代理之后,除了Internet Explorer(或IT配置的其他应用程序官员)之外几乎不可能逃脱,那么只要有可能我就会拥有它们由sbt或Maven自动下载,不包含在源存储库中。对于无法自动管理的依赖项,我将它们包含在源存储库中。如果除了Internet Explorer之外的任何东西都过了代理服务器是徒劳的,我会把所有东西放在存储库中。我在一家大公司工作,最近sbt和Maven已经能够通过代理,但我认为在过去Maven失败了,有很多工具几乎无法通过。

    至于发行版,我会制作一个构建目标来拉上所需的所有内容,包括依赖项,并且我很想将它检入到repo中,这样它就不会丢失。