[Java] 我应该保留我的项目文件在版本控制下吗?



Answers

.project和.classpath文件是。 但是,我们不会将IDE设置保留在版本控制中。 有一些插件在保持设置方面做得不好,我们发现某些设置不是从一台开发机器到另一台开发机器的便携式设备。 因此,我们有一个Wiki页面,它强调了开发人员设置IDE所需的步骤。

Question

我是否应该将项目文件保存为Eclipse的.project,.classpath,.settings,版本控制下(例如Subversion,GitHub,CVS,Mercurial等)?




不,我是一个沉重的Maven用户,并使用Q for Eclipse插件创建并保持.project和.classpath更新。 对于其他的东西,比如插件的设置,我通常会保留一个关于这个的README或Wiki页面。

另外,我曾经使用过的那些更喜欢其他IDE,只是使用Maven插件来生成保持IDE(和他们自己)快乐所需的文件。




我们使用IntelliJ IDEA,并在版本控制下保存项目(.ipr)和模块(.iml)文件的'.sample'版本。

这里的更大的东西是分享和重用版本,恕我直言。 但是如果你打算分享这些配置,那么放置它们比存储库更好的地方,就在旁边。

共享和版本化项目文件的一些优点:

  • 您可以查看任何标签/分支并快速开始处理
  • 使新开发人员更容易首先设置开发环境并加快速度
  • 这更好地坚持干,这总是令人非常满意。 在此之前, 所有的开发人员都必须时不时地设置这些东西,本质上是做重复的工作。 当然,每个人都有自己的小方法来避免重复自己,但从整个团队来看,有很多重复的努力。

请注意,在IDEA中,这些文件包含以下配置:什么是“源”和“测试源”目录; 关于外部依赖关系的所有内容(库jar位于何处以及相关的源或javadoc); 构建选项等等。这些东西在开发人员和开发人员之间并不相同(我对此非常不同意)。 IDEA在其他地方存储更多个人IDE设置,以及任何插件配置。 (我不太了解Eclipse,这可能会或可能不会完全不同。)

我同意这个答案 ,说:

您必须能够将一个项目加载到工作区中,并将其中所需的所有内容在IDE中正确设置并在几分钟内完成。 [...]加载它,设置它,去。

我们有这样的感谢版本化的项目文件。




我在这里选择了两种选择。

一方面,我认为每个人都应该可以自由使用他们最有生产力的开发工​​具集,只要所有源工件都存储在版本控制中,并且构建脚本(比如ANT或Maven)通过以下方式确保符合标准指定要使用哪个JDK,依赖哪个第三方库的版本,运行样式检查(例如checkstyle)和运行单元测试等。

另一方面,我认为很多人使用相同的工具(例如Eclipse),并且通常在设计时将一些事情标准化而非构建时间要好得多 - 例如,Checkstyle作为Eclipse插件比作为Eclipse插件更有用,一个ANT或Maven任务 - 最好是在一组开发工具和一组通用插件上进行标准化。

我参与了一个项目,每个人都使用完全相同的JDK,相同版本的Maven,相同版本的Eclipse,相同的Eclipse插件集和相同的配置文件(例如Checkstyle配置文件,代码格式化程序规则等)。 所有这些都保存在源代码管理 - .project,.classpath和.settings文件夹中的所有内容中。 在项目的最初阶段,人们不断调整依赖关系或构建过程,这使得生活变得非常简单。 当为项目添加新的首发时,它也非常有帮助。

总而言之,如果没有太多的宗教战争机会,我认为您应该制定一套基本的开发工具和插件标准,并确保您的构建脚本符合版本(例如,通过明确指定Java版本)。不要认为将JDK和Eclipse安装存储在源代码管理中会有很多好处。 其他所有不是派生的工件 - 包括项目文件,配置和插件首选项(特别是代码格式化程序和样式规则) - 应该进入源代码管理。

PS如果您使用Maven,有一种说法是说.project和.classpath文件是派生的工件。 这只有当你每次构建时生成它们,并且如果你从POM中生成它们之后从来没有必须手动调整它们(或者通过改变一些偏好而无意中改变了它们)




看起来像这些项目文件可以随着时间的推移而改变,因为是的,我把它们放在版本控制之下。




是的,除了.settings文件夹。 提交其他文件适合我们。 这里有一个类似的问题。




Links