Java 是否签入或不签入整个Eclipse项目?
我很快将签入一个新Java项目的第一次提交。我与EclipseGanymede一起工作,一系列插件使事情变得简单了一点 以前,我参加过一个项目,其中签入了整个Eclipse项目。签出后获取项目设置非常方便。然而,这种方法仍然不是没有问题的:Java 是否签入或不签入整个Eclipse项目?,java,eclipse,version-control,netbeans,Java,Eclipse,Version Control,Netbeans,我很快将签入一个新Java项目的第一次提交。我与EclipseGanymede一起工作,一系列插件使事情变得简单了一点 以前,我参加过一个项目,其中签入了整个Eclipse项目。签出后获取项目设置非常方便。然而,这种方法仍然不是没有问题的: 我强烈怀疑某些Eclipse配置文件会在没有用户交互的情况下发生更改(从我使用EclipseEuropa时开始),从而使它们在执行提交时显示为已更改(因为它们已更改,但不是以交互方式) 每个开发机器都有唯一的设置,项目中所有开发人员都有全局设置。把这些分开
- 我强烈怀疑某些Eclipse配置文件会在没有用户交互的情况下发生更改(从我使用EclipseEuropa时开始),从而使它们在执行提交时显示为已更改(因为它们已更改,但不是以交互方式)
- 每个开发机器都有唯一的设置,项目中所有开发人员都有全局设置。把这些分开很难
- 有时,如果Eclipse版本与其他版本不同,Eclipse会生气并扰乱项目配置。另一种情况是,它会更改格式,以便进行更新,如果提交会使其他人的配置混乱
- 可能有开发人员更喜欢NetBeans,后者稍后将加入该项目。然而,他们不会在未来几个月内加入
你是怎么组织的?您在版本控制中检查什么,在外部保留什么?在这种情况下,你认为最好的做法是什么? < P>我使用了具有XML项目文件的因特利利。我不签入它们,因为它们经常更改,如果需要,很容易重新创建 我不签入JAR文件。我将它们保存在一个单独的存储库中,即LaMaven 2 我不签入WAR、JAR、javadocs或其他可以生成的东西
我确实签入SQL和脚本以及Java源代码和XML配置。不签入。只签入项目的源代码。我只签入由人类完成的事情,生成的任何其他东西(无论是否自动生成)都应该很容易重新生成,并且易于更改(如您所述)。唯一的例外是当生成的文件很难(需要大量的人工干预;))正确处理时。诸如此类的事情真的应该自动化一些。由于您提到的缺点,我建议版本控制系统忽略实际的项目文件
如果项目设置中有足够的一致性信息,使其可以访问,那么将其复制到Eclipse不认为特别的位置,这样您就可以在签出时使用它(并复制回Eclipse关注它的位置)。将实际项目文件与受控文件分开很有可能会导致同步丢失,因此,只有当设置可用(或者您确信能够保持同步)有明显的好处时,我才建议这样做。我喜欢签入.project、.classpath、,并且类似的文件只有当它们在任何Eclipse用户的机器上都是相同的时候。(不管怎样,使用其他IDE的人都应该能够签出并构建您的项目,但这个问题与是否签入仅限Eclipse的文件是正交的。)
如果处理项目的不同用户希望对其.project或.classpath或其他文件进行更改或调整,我建议您不要将其签入源代码管理。从长远来看,这只会引起头痛。至少您应该签入
.project
和.classpath
文件。如果您的团队中有人在.classpath
中硬编码外部JAR位置,您应该把它们贴在墙上,然后射击它们。我使用Maven来管理我的依赖项,但如果您不使用Maven,则应该使用一致的命名约定为外部JAR创建用户库
之后,您需要通过插件的方式来考虑插件上的事情。例如,我使用Spring,所以我总是签入
.springBeans
,同样地,对于CheckStyle,我总是签入.CheckStyle
项目
当涉及到.settings
文件夹中的配置时,它变得有点棘手,但是如果我更改项目的默认设置并希望与团队其他成员共享,我通常会签入以下内容:
- .settings/org.eclipse.jdt.ui.prefs-它包含导入顺序的设置
- .settings/org.eclipse.jdt.core.prefs-它包含编译器版本的设置
现在,如何确保连续构建系统理解对eclipse设置所做的更改,这是另一个问题。。。(我为ant提供了一个单独的build.xml,可以手动更新)我建议使用它,这样整个生命周期都不在任何IDE范围之内。您可以在命令行上轻松创建一个eclipse项目,如果不是eclipse,您可以使用任何您想要的东西。它有它的怪癖,但当涉及到依赖项和生成管理时,它会带来很多痛苦。在我们的例子中,我们通常检查项目文件(.project和.classpath)以使