Java项目:应该将.classpath .project文件提交到存储库吗?

我应该检查我的.project和.classpath文件吗?

我的朋友告诉我,我应该只检查.java文件和build.xml以保证可移植性。 他说:“.classpath会导致你在不同环境下的可移植性大大降低.project完全是你本地的eclipse设置”

我同意他,但部分。

– 没有签入.project文件会使我的开发效率降低(我不能简单地从目录中“导入”项目代码)

– 没有签入.classpath文件似乎对我来说(?)如果我的build.xml仔细写。

任何人都想在这里分享他们的经验?

检入.project.classpath没有任何问题。 我会这样做,如果你的build.xml不能为你创build这两个文件。 正如你所说的,当你尝试创build一个新的eclipse工作区时,错过这些文件是不舒服的。

在你检查.classpath之前,你应该确定它没有绝对path。 使用文本编辑器将其转换为相对的文件。

编辑:或者甚至更好,在你的绝对path中使用eclipse classpathvariables,比如@ taylor-leese评论。

有一件事我会告诫不要检查.classpath文件是确保你不参考你的项目之外的文件。 Eclipse使用完整的文件path存储这些文件的位置,并且需要确保其他开发人员将这些文件放在完全相同的位置。

所有这些文件的关键问题是“它们能被自动复制吗?” 如果没有,请将其检入源代码pipe理。

在这种情况下,我会说“是的”,除非你使用maven,它有m2eclipse和eclipse插件来为你生成它们。

我不知道eclipse的偏好文件,但是用IntelliJ,这些文件是操作系统不可知论者,这意味着它不会破坏你的可移植性。 除非你定义了一个完整的系统库(这将是非常危险的/愚蠢的)。

当你分享首选项时,你确定每个人都将在项目上使用相同的条件(插件configuration,编码,profiles [for intelliJ]),这真的是一件好事。

当一些Eclipse文件在这里时,它并不会影响我,而且我认为当一些隐藏的文件刚好在那里时,它不应该/不会真的影响到其他开发者。

我们检查.project和.classpath。 通过使用ProjectSet,我们可以使用一个“Import Team ProjectSet”检出复杂的工作空间,

对于我的2美分,我认为这是一个不好的做法。 项目不应该绑定到IDE,特别是不应该绑定到IDE的特定版本。

检查Eclipseconfiguration文件可能适用于更简单和短期的项目。 对于几年来开发的大型项目来说,这通常会导致更多的麻烦,因为IDE版本会改变,而项目configuration文件则不会。 试想在Eclipse 4.3中使用Eclipse 2.0configuration文件检查2年前的分支,并使用一些自定义库和m2e集成…没有任何乐趣…

没有签入.project文件会使我的开发效率降低(我不能简单地从目录中“导入”项目代码)

对于这个问题,您可以select创build新项目并导入现有源

像.project这样的IDE特定文件的一个问题是,其他开发人员可能希望使用另一个IDE来开发项目,因此他们可能会添加另一种types的项目文件。 这会让你的回购混乱。

我宁愿签入.project和.classpath。

当这个项目被多个开发者共享时,这将是有帮助的 安装开发环境变得简单快捷。 通过简单地导入这个作为现有的项目在任何系统使用Eclipse。

这里只需要注意classpath是相对于项目而言的。

我经常有一个类似的,更一般的问题。 问题实质上是:

  • 哪些文件是我为承诺的?
  • 哪些文件是我为其他人提供的
  • →我如何结合“版本”的目标?

我提供了在这里讨论,所以你可能会发现更多的细节问题,以及有趣的解决scheme:)


我最喜欢的一个就是使用git submodule :将你的.project文件等保存在一个私有的commit commit中。 并把你最终的,纯粹的,必不可less的src生产变成一个整洁的submodule :一个公共回购。

 project/ # root module | .git # private repo | .project | .classpath | momsNumber.txt +---src/ # submodule | | .git # public repo | | main.java | +---package/ | | | Etc.java 

无论如何看到那里。

没有将.classpath和.project文件签入存储库的问题。 它将帮助使用Eclipse的开发人员变得更快。

警告 :确保你的.classpath文件只引用那些或者用项目检入仓库的工件,或者可以自动获取(例如maven工件)。