我正在用Java开发一个web应用程序,我在lib文件夹中使用了几个第三方JAR文件。我也有Subversion作为我的版本控制工具。
我的问题是,在签入我的项目文件时,我应该也签入JAR文件还是不需要对JAR文件进行版本化,因为我没有修改它们?
发布于 2010-01-13 03:57:31
这是一个非常主观的问题.我通常应用以下经验法则:如果我有构建二进制的代码,请签入代码,而不是二进制;如果运行我的代码需要二进制代码,并且它来自外部源,则签入二进制文件。
请注意,您将希望与签入存储库中的某个第三方二进制文件一起符合任何法律条件。
发布于 2010-01-13 04:02:07
我建议只要有可能,就应该使用Maven。然后,您就不需要将第三方JAR签入到您的存储库中,以便在您的开发团队之间共享它们(大多数情况下)。
如果您还不知道,Maven执行两个主要任务:构建自动化和依赖关系管理。每个项目都有一个描述符文件,其中包括配置JAR作为依赖项。这样做的好处是,Maven将自动为您解决这些JAR的依赖关系,以及它们的依赖关系等等。
发布于 2010-02-06 00:35:05
就我个人而言,我试图避免将项目的依赖项签入SCM版本控制存储库。通常,按照另一个答案中的建议使用Maven,并部署一个公司内部Maven存储库,该存储库的优点是将此资源本地化到开发团队,并提供您自己的项目的已完成/版本化/发布工件所在的位置。
我认为Jars是SCM的问题是,首先,SCM用于管理源代码,并为此目的对它们进行优化。编译后的工件不是源代码,也不是二进制文件,当您通常将二进制文件分支或更新时,您将生成二进制文件的副本,因为大多数SCM无法“区分”二进制文件。
另一个考虑是,如果有两个需要签入依赖项的项目,您会做什么?你是否在每个项目中单独登记,并戴上副本?还是做第三个只包含依赖项的项目?现在您正在手动管理该项目中的jar文件。如果您的两个项目需要相互不兼容的依赖项,怎么办?
第三,如何管理项目间的依赖关系(其中一个项目依赖于另一个项目)?jar文件从一个签入另一个吗?版本控制和其他变更控制呢?你是否只需要检查这两个项目,并要求它们按照严格的顺序建造?
在我的经验和观点中,这些问题通常在一个只有中等复杂性的开发中就足够了,足以明确地回答这个问题:不,签入jar文件依赖关系是不可接受的。使用一个构建系统,如Maven或Ant+Ivy (或另一种选择),它提供了一种方法来外部化来自源代码控制系统的依赖项的管理和存储。
https://stackoverflow.com/questions/2054268
复制相似问题