要检入或不检入整个Eclipse项目?

我很快就要检查一个新的Java项目的第一次提交。 我使用Eclipse Ganymede,一些插件让事情变得更容易一些。

以前,我一直是整个Eclipse项目签入的项目的一部分。检出后获得项目设置是非常方便的。 但是这种方法仍然没有问题:

  • 我强烈怀疑一些Eclipseconfiguration文件会在没有用户交互的情况下(从我使用Eclipse Europa时)改变,使得它们在提交时发生变化(因为它们被更改,但不能交互)。
  • 每个开发机器都有独特的设置,以及项目中所有开发人员的全局设置。 保持这些分开是很难的。
  • 有些时候,如果Eclipse版本与其他版本不同,那么Eclipse会生气并搞乱项目configuration。 另一种情况是,它改变格式,以便得到更新,如果提交了其他人的configuration。

对于这个特定的项目,我有另一个不提交项目文件的原因:

  • 可能有开发人员喜欢NetBeans,稍后将join该项目。 但是他们在未来几个月内不会join。

你如何组织这个? 你检查版本控制什么,你在外面保持什么? 在这种情况下你认为最好的做法是什么?

至less应该检入.project.classpath文件。 如果你的团队中的任何人在.classpath硬编码外部的JAR位置,你应该把它们放在墙上并射击。 我使用Maven来pipe理我的依赖关系,但是如果您不使用maven,则应该使用一致的命名约定为您的外部JAR创build用户库。

之后,您需要通过插件考虑插件中的内容。 比如我和Spring一起工作,所以我总是检入.springBeans ,同样对于CheckStyle我总是检查.checkstyle项目。

当涉及到.settings文件夹中的configuration时,它有点复杂,但是如果我更改了我的项目的默认设置,并希望它们与团队的其他成员共享,我通常会检查以下内容:

  • .settings / org.eclipse.jdt.ui.prefs – 它包含导入顺序的设置
  • .settings / org.eclipse.jdt.core.prefs – 它包含编译器版本的设置

一般来说,我没有注意到Ganymede修改文件没有我修改项目的喜好。

我build议使用maven ,以使整个生命周期在任何IDE之外。 你可以很容易地在命令行中用它创build一个eclipse项目,如果不是eclipse,你可以使用任何你想要的东西。 它有它的怪癖,但是当涉及到依赖关系和构buildpipe理时,会带来很多的苦恼。

在我们的世界里,我们检查整个Eclipse项目和整个并行但独立的Netbeans项目。 我们的动机完全集中在“当我结帐时,我想立即进行functionconfiguration”。 这意味着我们必须做一些工作:

  1. 为每个主IDE创build可运行的configuration(像他们喜欢的人)。 这包括主类,工作目录,VM参数等
  2. 为我们所有的相关场景创build有用的启动脚本。
  3. 创build不会导致检出时间过长的编辑数据集(这是一个大项目)。

当我们的新员工能够将项目从Subversion检入到Eclipse中,并且立即运行带有(小)真实数据集的function系统而没有任何大惊小怪的时候,这个理念就值得花钱(或者至less是几乎更有价值的工时)或打扰他的一部分。

跟进 :这个“让新人变得更轻松”的理念在他改变IDE的时候又得到了回报(他决定在Eclipse中使用Netbeans很长一段时间,并决定坚持一段时间)。 根本不需要configuration,他只是在Eclipse指向的同一个目录下打开Netbeans项目。 切换时间大约为60秒。

我只检查过的东西是由人类完成的,任何产生的东西(无论是否自动)都应该很容易再生,并且很容易改变(正如你所说的)。 唯一的例外是生成的文件很难(需要大量的人工干预;))。 如何像这样的事情真的应该自动化一些如何。

尝试将您的项目移植到像maven这样的构build系统。 它拥有您所需的一切,以便在您使用的每台机器上获得相同的项目体验。

有一切插件。 像eclipse插件一样。 你只需input“mvn eclipse:eclipse”,插件生成你的整个准备工作的eclipse项目。

给你的问题的答案。 切勿在开发周期中随时检入项目未使用的文件。 这意味着像eclipse属性等元数据文件不应该在SCM中签入。

我喜欢检查.project,.classpath和类似的文件, 只要它们在任何Eclipse用户的机器上都是相同的。 (使用其他IDE的人应该能够检出并build立您的项目,但是这个问题与是否检查仅限Eclipse的文件是正交的。)

如果不同的用户在这个项目上工作的时候会想对他们的.project或者.classpath或者其他文件进行修改或者调整,我build议你不要将他们检查到源代码pipe理中。 这只会令长期头痛。

我使用IntelliJ,它有XML项目文件。 我不检查它们,因为它们经常变化,如果需要,很容易重新创build。

我不检查JAR文件。 我把它们放在一个单独的版本库中,一个la Maven 2。

我不检查WAR或JAR或javadoc或其他可以生成的东西。

我检查SQL和脚本和Java源和XMLconfiguration。

我build议让实际的项目文件被版本控制系统忽略,因为你提到的缺点。

如果在项目设置中有足够的一致性信息可以使其可访问,则将其复制到Eclipse不被视为特殊的位置,并且在结帐时可以使用该信息(并复制到Eclipse将会关注的地方)。 有一个很好的机会,保持实际的项目文件分开的控制将导致失去同步,所以我只能build议这个,如果明确的好处从设置可用(或者你有信心,你会能够保持同步)

在我们的例子中,我们用来检查项目文件(.project和.classpath),以方便所有开发人员创build他们的项目工作区。 通用的首选项文件和团队项目集也位于源代码pipe理中,因此创build工作区与导入首选项和导入团队项目集一样简单。 这很好,但是依赖每个人都有一个一致的环境,任何自定义必须在创build基本工作区之后应用。

我们大部分仍然这样做,但是Maven现在被使用,所以当然依赖pipe理是通过Maven来处理的。 为了避免冲突的信息,.project和.classpath从源代码pipe理中删除,现在通过maven目标生成,然后导入团队项目集。 这很容易适应不同的环境,因为您只需要脚本就可以根据Mavenconfiguration生成IDE特定部分。

PS-为了便于维护,我宁愿让每个人都使用相同的环境。 其他任何事情都不可避免地成为某人的全职维护工作。

Netbeans 6.5有一个改进的Eclipse项目导入,它应该将来自Netbeans的更改同步到Eclipse: http : //wiki.netbeans.org/NewAndNoteWorthyNB65#section-NewAndNoteWorthyNB65-EclipseProjectImportAndSynchronization

别。 只检查您的项目的源代码。

作为回应:

“每个开发机器都有独特的设置,而且项目中的所有开发人员都具有全局设置,保持这些设置是非常困难的。”

Eclipse提供了许多方法来保持本地设置的可pipe理性:Java Classpathvariables(Java> Build Path> Classpathvariables)是一个,“Linked Resources”(General> Workspace> Linked Resources)是另一个http://help.eclipse.org /stable/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/concepts-13.htm创build一个自述文件,指出在构build/运行项目之前要设置的设置在我看来是相当好的。

现在如何确保你的连续编译系统能够理解对eclipse设置所做的更改,这是另一个问题…(我有一个单独的build.xml,