Java 我是否应该对项目文件进行版本控制?

Java 我是否应该对项目文件进行版本控制?,java,eclipse,version-control,ide,Java,Eclipse,Version Control,Ide,我是否应该像Eclipse的.project、.classpath、.settings那样将项目文件M置于版本控制之下(例如Subversion、GitHub、CVS、Mercurial等)?在处理项目时,这些项目文件似乎会随着时间的推移而变化,所以是的,我将它们置于版本控制之下。是的,除了.settings文件夹。提交其他文件对我们来说很好。还有一个类似的问题。.project和.classpath文件是。但是,我们不会将IDE设置保留在版本控制中。有些插件在持久化设置方面做得不好,我们发现有

我是否应该像Eclipse的.project、.classpath、.settings那样将项目文件M置于版本控制之下(例如Subversion、GitHub、CVS、Mercurial等)?

在处理项目时,这些项目文件似乎会随着时间的推移而变化,所以是的,我将它们置于版本控制之下。

是的,除了.settings文件夹。提交其他文件对我们来说很好。还有一个类似的问题。

.project和.classpath文件是。但是,我们不会将IDE设置保留在版本控制中。有些插件在持久化设置方面做得不好,我们发现有些设置从一台开发人员机器到下一台开发人员机器的移植性不是很好。因此,我们有一个Wiki页面,突出显示开发人员设置IDE所需的步骤。

< P>这些是我认为是生成的文件,因此我从不把它们放在版本控制之下。它们可能因机器和开发人员而异,例如,当人们安装了不同的Eclipse插件时

相反,我使用一个构建工具(Maven),当您进行新的签出时,它可以生成这些文件的初始版本。

不,我是一个大量用户,使用插件创建并更新.project和.classpath。对于其他的事情,比如插件的设置,我通常会有一个自述或Wiki页面


还有那些我与之共事过的喜欢其他IDE的人,他们只需要使用Maven插件来生成使他们的IDE(和他们自己)满意所需的文件。

不,因为我只需要构建软件所需的版本控制文件。此外,个别开发人员可能有自己的特定于项目的设置。

我想这是所有人的意见,但多年来的最佳实践表明,特定于给定IDE的文件不应存储在源代码管理中,除非您的整个组织都在一个IDE上标准化,并且您从来没有任何切换的意图

无论如何,您肯定不希望存储用户设置,并且.project可以包含真正特定于开发人员的设置


我建议使用Maven或Ant之类的标准化构建系统。任何开发人员都可以在几秒钟内获得在其IDE中配置的类路径。

您确实希望在版本控制中保留任何可移植的设置文件
意思:
没有绝对路径的任何文件。
这包括:

  • .项目
  • .classpath(如果未使用绝对路径,则可以使用IDE变量或用户环境变量)
  • IDE设置(这就是我强烈反对“已接受”答案的原因)。这些设置通常包括静态代码分析规则,对于将此项目加载到其工作区的任何用户来说,一致执行这些规则至关重要
  • IDE特定的设置建议必须写在一个大的自述文件中(当然还有版本)
我的经验法则:
您必须能够将项目加载到工作区中,并在其中包含在IDE中正确设置项目所需的所有内容,并在几分钟内开始工作。
无需阅读其他文档、wiki页面或其他内容。

加载、设置、启动。

我在这两个选项之间左右为难

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

另一方面,我认为很多人使用相同的工具(例如Eclipse)通常,在设计时而不是在构建时对某些东西进行标准化要好得多——例如,Checkstyle作为Eclipse插件比作为ANT或Maven任务有用得多——更好的做法是对开发工具集和通用插件集进行标准化

我在一个项目中工作,每个人都使用完全相同的JDK、相同版本的Maven、相同版本的Eclipse、相同的Eclipse插件集和相同的配置文件(例如Checkstyle概要文件、代码格式化程序规则等)。所有这些都保存在源代码管理-.project、.classpath和.settings文件夹中的所有内容中。在项目的初始阶段,当人们不断调整依赖项或构建过程时,它使生活变得非常轻松。在为项目增加新的启动者时,它也起到了巨大的作用

总的来说,我认为如果没有太多的宗教战争的机会,您应该标准化开发工具和插件的基本集合,并确保构建脚本中的版本符合性(例如,通过明确指定Java版本).我认为在源代码管理中存储JDK和Eclipse安装没有多大好处。非派生工件的所有其他内容——包括项目文件、配置和插件首选项(特别是代码格式化程序和样式规则)——都应该纳入源代码管理


另外,如果您使用Maven,则有理由认为.project和.classpath文件是派生工件。只有在每次生成时都生成它们,并且在从POM生成它们之后从未手动调整过它们(或通过更改某些首选项无意中更改了它们),才是这样。除了生成输出以外的所有内容。

我们使用IntelliJ IDEA,并将项目(.ipr)和模块(.iml)文件的“.sample”版本置于版本控制之下

IMHO说,这里比版本控制更重要的是共享和重用。但是,如果您要共享这些配置,还有什么比存储库更好的地方可以将它们放在其他所有配置的旁边呢

共享的一些优点&