Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否签入或不签入整个Eclipse项目?_Java_Eclipse_Version Control_Netbeans - Fatal编程技术网

Java 是否签入或不签入整个Eclipse项目?

Java 是否签入或不签入整个Eclipse项目?,java,eclipse,version-control,netbeans,Java,Eclipse,Version Control,Netbeans,我很快将签入一个新Java项目的第一次提交。我与EclipseGanymede一起工作,一系列插件使事情变得简单了一点 以前,我参加过一个项目,其中签入了整个Eclipse项目。签出后获取项目设置非常方便。然而,这种方法仍然不是没有问题的: 我强烈怀疑某些Eclipse配置文件会在没有用户交互的情况下发生更改(从我使用EclipseEuropa时开始),从而使它们在执行提交时显示为已更改(因为它们已更改,但不是以交互方式) 每个开发机器都有唯一的设置,项目中所有开发人员都有全局设置。把这些分开

我很快将签入一个新Java项目的第一次提交。我与EclipseGanymede一起工作,一系列插件使事情变得简单了一点

以前,我参加过一个项目,其中签入了整个Eclipse项目。签出后获取项目设置非常方便。然而,这种方法仍然不是没有问题的:

  • 我强烈怀疑某些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-它包含编译器版本的设置
一般来说,我没有注意到Ganymede在不修改项目首选项的情况下修改文件。

作为对以下内容的响应:

“每个开发机器都有独特的设置,项目中所有开发人员都有全局设置。将这些设置分开很难。”

Eclipse提供了许多方法来保持本地设置的可管理性:Java类路径变量(Java>构建路径>类路径变量)是其中之一,“链接资源”(General>Workspace>Linked Resources)是另一种创建自述文件的方法,该自述文件声明在构建/运行项目之前要设置的设置在我看来非常有效


现在,如何确保连续构建系统理解对eclipse设置所做的更改,这是另一个问题。。。(我为ant提供了一个单独的build.xml,可以手动更新)

我建议使用它,这样整个生命周期都不在任何IDE范围之内。您可以在命令行上轻松创建一个eclipse项目,如果不是eclipse,您可以使用任何您想要的东西。它有它的怪癖,但当涉及到依赖项和生成管理时,它会带来很多痛苦。

在我们的例子中,我们通常检查项目文件(.project和.classpath)以使