【问题标题】:.classpath and .project - check into version control or not?.classpath 和 .project - 是否检查版本控制?
【发布时间】:2010-05-12 11:17:38
【问题描述】:

我正在运行一个开源 java 项目,该项目由依赖树中的多个模块组成。所有这些模块都是 subversion 存储库中的子目录。对于我们项目的新手来说,在 eclipse 中手动设置所有这些需要做很多工作。

并非我们所有的开发人员都使用 eclipse。尽管如此,我们正在考虑只签入 .classpath 和 .project 文件以帮助新手入门。这是一个好主意吗?或者这会导致这些文件中的持续冲突吗?是否有另一种方法可以使项目易于在 Eclipse 上设置?

【问题讨论】:

标签: eclipse version-control ide


【解决方案1】:

绝对是的,正如我在“Do you keep your project files under version control?”中所说的那样

“加载,设置,开始。”

但是...这实际上仅适用于最近的 Eclipse3.5 设置,其中构建路径支持相对路径


Eclipse3.6 会更好,因为它支持Linked Resources 中路径变量的相对路径


(自 3.6M5 起)

【讨论】:

【解决方案2】:

绝对不——通过颠覆分发项目文件通常是一个糟糕的主意。特别是因为有人可能会以某种奇怪的方式修改它们。项目文档中的一个好页面是一个更好的主意。我们的项目也有许多模块和复杂的设置。我们已经建立了一个融合页面,描述如何在每个流行的 IDE(IntelliJ、Eclipse、NetBeans)上开始使用该项目。 Subversion 中的 README 文件包含相同的信息。

【讨论】:

  • 我不能同意。根据我的经验,最好将这些文件签入以使结帐尽可能容易。有人可能会以某种奇怪的方式改变它们?有人可能会以某种奇怪的方式更改您的代码...
  • Arne,您应该将其作为答案,而不是评论。
  • 任何 IDE 的项目文件实际上都不是任何项目的一部分 - 如果你想分发它们 - 去吧 - 将它们附加到我提到的文章中。通常团队中的每个人都可以修改 repo 中的文件,但不是每个人都可以将新文件附加到重要的文档节点等。人们很容易忘记忽略类路径和项目文件并在不应该提交的时候提交它们。即使你让它们处于颠覆状态——你当然应该把它们放在一边……
  • -1,完全不同意。项目设置是项目日常工作的关键部分。不小心签入错误设置的缺点远小于自动让每个人保持最新状态的优点。毕竟,您总是可以轻松返回到以前的版本。
  • 每个人都有权发表意见。事实上,我一开始就不会创建依赖于 Eclipse(或任何其他 IDE)项目系统的项目...... Maven 是最终的项目理解工具,它会使 IDE 特定的设置过时。顺便说一句,注意到当前设置有问题并返回上一个版本的时间与自己调整任何新设置的时间不太可能不同。至少在我的公司,如果在进行较大更改后需要用户干预,团队中的每个人都会收到电子邮件通知。
【解决方案3】:

我投反对票,但那是因为我通常会从 maven 生成这些文件

【讨论】:

  • m2e 为您做大部分但不是所有事情
【解决方案4】:

根据我的经验,除了涉及纯本地设置的有限情况外,一切都应该在源代码管理中。源代码控制的法则是,所有推入的东西都应该被那些拉出来的人所期待。不幸的是,eclipse经常导致这样的事情出现在.classpath

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

所以在我的 Mac 上这是可行的,也许 Mac 上的某个人拥有相同的 JRE,但这对其他人不起作用。

此外,没有简单的方法可以解决这个问题。 Eclipse 将始终添加它。我希望在其中有 .classpath 文件,因为在我们关心版本控制的 lib 文件夹中有一些 3rd 方 JAR,所以我们将它们留在那里,这样新开发人员就不必得到它们.我们正在迁移到托管系统,但仍然签入了托管+非托管依赖项。这意味着所有开发人员只需确保两个目录位于他们的.classpaths 中。但这比每次拉取时都必须修复 JRE 并在每次提交时更改 .classpath 更好。

尽管如此,Eclipse 还为您做了一些其他的好事。 .project 文件通常在实例之间是相同的,所以包括它。但是关于 eclipse 源代码控制的最好的事情是运行配置设置。在 Run Configurations 对话框的“Common”选项卡下,保存配置,以便您的同事在 Debug 和 Run 的收藏夹列表下显示它们。对我来说,一堆.launch 文件放在.settings 目录中,所以我们都可以使用它们。

所以我说:.settings 目录进入启动配置的源代码控制(*.prefs 除外)

.classpath 置之不理

.project 进去。

【讨论】:

  • 即使使用 JRE/JVM 的执行环境也是这样吗?
【解决方案5】:

我会签入​​这些文件,以使新用户的入门尽可能容易。充其量用户应该检查项目并且应该能够在没有额外知识的情况下运行它。对于此文件,规则与项目中其他文件的规则相同:小心处理。您不应该在源代码中放置绝对路径,也不应该在配置文件中放置。

如果以项目从头开始运行的方式签入文件,则不应该有太多的力量来更改它们。

【讨论】:

    【解决方案6】:

    如果文件不包含绝对路径和其他将它们直接绑定到单个开发人员环境的数据,我建议您将文件签入 subversion。

    如果文件确实包含绝对路径等,README 将是更好的选择。

    【讨论】:

      【解决方案7】:

      是的,一定要签入,但请确保记录任何路径依赖关系并尽可能避免使用绝对路径。

      如果您不签入,那么任何签出项目的人都需要重新创建所有这些设置,这很烦人并且可能容易出错。

      一些复杂的设置最好由脚本处理以生成这些文件,但通常最好只签入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2014-09-06
        相关资源
        最近更新 更多