问题 在eclipse Java项目中应该将哪些文件添加到SVN?


我有一个Java项目,我想提交到我的SVN存储库,使用eclipse创建。

现在,哪些文件(显然除了源代码)是必要的?在工作区根目录中,有一个包含许多文件和子文件夹的.settings文件夹,在项目文件夹中有两个文件 - .classpath和.project,另一个.settings文件夹包含一个文件 - org.eclipse.jdt.core .prefs。

哪些文件应该提交给SVN,哪些文件可以安全地排除?


1928
2018-06-14 01:31


起源



答案:


如果您希望在整个团队中拥有一致的设置,它们都非常有用。

.classpath 和 .project 意味着只需导入项目,每个人都可以启动并运行项目。每个人在签入时都会对项目中包含的库和源文件进行任何更改。

.settings 目录包含代码格式化选项以及编译器认为是警告,错误或确定的内容。为了保持一致性,我也开始检查这些内容(只要团队中的每个人都同意格式化标准,我猜)。

我发现在Eclipse中跨版本控制共享内容的最大限制是在库定义中。库定义似乎只存储在每个用户的基础上,因此如果您在.classpath文件中引用“库”,则每个其他用户必须手动定义该库的内容(或手动导入导出的库定义文件) 。


编辑:  (解决@mliebelt的评论如下)

如果您试图在开发人员之间保持一致性/标准化,则只提交.settings文件。如果这不是项目的问题,那么不提交.settings文件就不用担心维护了。可能不需要提交特定于个人喜欢的插件的文件(虽然我不认为如果它们会受到伤害,可能会被忽略?)。

我发现值得承诺的两个最常见的是 org.eclipse.jdt.core.prefs 和 org.eclipse.jdt.ui.prefs,它是任何(Java)Eclipse项目的核心。


11
2018-06-14 01:43



提及.settings的+1。对于我们的项目,我发现这个文件非常宝贵,因为我们避免提供大量有关编码指南和格式规则的文档。相反,我们花了那些时间来同意eclipse给我们的所有选项,并将它们检查到项目中。 - Hermann Hans
我是否正确地认为构建文件夹不需要提交? - Ciaran Gallagher
如果“build”文件夹包含编译器或其他自动生成的文件的输出,通常您不会提交它。如果它有源文件(如构建脚本),那么你可能会。 - Ash
你真的很确定吗? .settings 文件夹不包含每个用户不同的内容?在过去, .settings 包含缓存(取决于您正在使用的插件),因此您不确定它是否仅包含应由在同一Eclipse项目上工作的所有人之间共享的用户更改的内容。所以我怀疑这一切都很好。你有变化吗? .settings 你必须经常提交吗? - mliebelt
@mliebelt:编辑希望能解决这个问题 - Ash


答案:


如果您希望在整个团队中拥有一致的设置,它们都非常有用。

.classpath 和 .project 意味着只需导入项目,每个人都可以启动并运行项目。每个人在签入时都会对项目中包含的库和源文件进行任何更改。

.settings 目录包含代码格式化选项以及编译器认为是警告,错误或确定的内容。为了保持一致性,我也开始检查这些内容(只要团队中的每个人都同意格式化标准,我猜)。

我发现在Eclipse中跨版本控制共享内容的最大限制是在库定义中。库定义似乎只存储在每个用户的基础上,因此如果您在.classpath文件中引用“库”,则每个其他用户必须手动定义该库的内容(或手动导入导出的库定义文件) 。


编辑:  (解决@mliebelt的评论如下)

如果您试图在开发人员之间保持一致性/标准化,则只提交.settings文件。如果这不是项目的问题,那么不提交.settings文件就不用担心维护了。可能不需要提交特定于个人喜欢的插件的文件(虽然我不认为如果它们会受到伤害,可能会被忽略?)。

我发现值得承诺的两个最常见的是 org.eclipse.jdt.core.prefs 和 org.eclipse.jdt.ui.prefs,它是任何(Java)Eclipse项目的核心。


11
2018-06-14 01:43



提及.settings的+1。对于我们的项目,我发现这个文件非常宝贵,因为我们避免提供大量有关编码指南和格式规则的文档。相反,我们花了那些时间来同意eclipse给我们的所有选项,并将它们检查到项目中。 - Hermann Hans
我是否正确地认为构建文件夹不需要提交? - Ciaran Gallagher
如果“build”文件夹包含编译器或其他自动生成的文件的输出,通常您不会提交它。如果它有源文件(如构建脚本),那么你可能会。 - Ash
你真的很确定吗? .settings 文件夹不包含每个用户不同的内容?在过去, .settings 包含缓存(取决于您正在使用的插件),因此您不确定它是否仅包含应由在同一Eclipse项目上工作的所有人之间共享的用户更改的内容。所以我怀疑这一切都很好。你有变化吗? .settings 你必须经常提交吗? - mliebelt
@mliebelt:编辑希望能解决这个问题 - Ash


您可以排除.settings文件夹,但.project文件对于想要重建相同的Eclipse项目的其他开发人员非常有用。如果检查文件,它应该只有相对引用(如果没有,你应该修改它。)


2
2018-06-14 01:32



你指的是项目目录中的.settings文件夹吗?那么.classpath文件怎么样? - Jake Petroules
正如另一个答案所说,是的, .classpath 也需要,抱歉。 - dplass
该 .settings 文件夹由所有项目共享,没有 .settings 每个项目...... - mliebelt


与其他答案相比,我已经获得了更好的体验 没有检查.project 在我使用的大型开源项目中存档。

您可能不同意我的意见,但共享.project文件存在一个问题:它们包含对项目中使用的项目性质的引用。项目性质再次取决于本地开发人员机器上安装的插件。

示例:如果在Java项目中使用Findbugs,则会在Java项目中添加新的特性。检查该文件,在另一个系统上修改它(没有安装Findbugs),然后再次在我的系统上使用它导致Findbugs引用丢失(因此所有Findbugs检查都被静默删除)。

但是,如果您可以让所有开发人员同意使用相同的工具,那么您可以轻松解决此问题。


2
2018-05-25 19:11



好点子。但仅适用于您不要求所有开发人员使用相同插件的开源项目。在那里,您通常甚至无法控制每个人都必须使用哪个IDE,因此您需要检查来源 只要。 - mliebelt