我正在尝试为我的项目使用 Eclipse、Subversion 和 Maven,每个人都告诉我永远不要签入以下文件:
target/
.classpath
.project
.settings
但是,如果我不签入它们并且其他一些项目从 Eclipse 中签出该项目,Eclipse 不知道它是什么类型的项目。我们做错了什么吗?
你如何工作的?
Eclipse 有一个 Maven 插件;我相信它被称为m2eclipse。安装后,您可以选择 Import from Maven project 并选择pom.xml
将您的项目导入到 Eclipse 的选项,即使它.project
不.settings
存在。因此,您无需将它们提交给 svn。这带来了 IDE 中立性的优势;您团队的其他成员可以毫无顾虑地使用 Intellij IDEA 或 NetBeans。
Maven还有一个eclipse插件;你可以去哪里pom.xml
,打开一个终端并输入mvn eclipse:eclipse
,它会自动生成.project
和.settings.
。但是更推荐第一个选项。
我对 eclipse、maven 和 git 有同样的问题,所以也许它对你有帮助:
这就是我在 Eclipse 中处理这个问题的方式。希望它足够清楚?顺便说一句,您不应该签入这些文件,因为类路径等在其他机器上可能会有所不同。
我签入 .classpath 和 .project 但不经常签入。您必须确保从事该项目的每个人都拥有足够接近的 eclipse 版本(包括包含的特定插件和 eclipse 功能)。有时,如果您确保几乎没有人签入这些文件,并且每个人都只是比较并在更新时从版本控制手动更新这些文件,则有时您可以使用非常不同的 eclipse 版本。
如果您不签入,每个人都必须创建一个空项目,然后将源文件(以及所有版本控制文件或文件夹)加载到项目中。如果您小心,您可以复制这两个文件,然后使用选项设置来使它们匹配。
请注意,Maven 对此有很大帮助,因为它处理了 .classpath 文件的大部分内容。
不签入这些文件的主要原因是 IDE 很可能会更改这些文件以适应您的本地开发环境。如果每个人都一直在提交他们的版本,这可能会导致冲突并因此“破坏”项目。
就是说,eclipse 应该通过 m2eclipse 插件(我相信这些天默认情况下可能会嵌入)具有不错的 maven 集成。
Maven 背后的部分想法正是如此——可重现的跨平台构建、跨 IDE 等——因此构建项目不需要像这样的 IDE 特定文件。使用 m2eclipse 插件导入项目应该可以很好地解决问题。
如果您的意思是其他成员签出项目并且它对他们不起作用,他们可以在不使用 eclipse 的情况下单独签出 maven 项目,然后使用m2eclipse
插件将其作为现有 maven 项目导入 eclipse。这很干净,没有任何问题(至少对我来说)。
如果您团队中的每个人都在使用 Eclipse,并且同意该项目永远不会使用其他任何东西,那么您也可以检查这些文件。但是如果有人使用 IntelliJ、Netbeans 的其他工具或拥有他的Eclipse 非常定制。
这取决于。
Maven 文档明确表示“不要签入 .project/.classpath/.settings/,因为它们可以从 pom.xml 重新生成”。句子的后半部分(“它们可以再生”)不正确,因此句子的第一部分(建议)可能会也可能不会,这取决于情况。并非 Eclipse 配置的每一点都可以从 pom.xml 重新生成,因此我的观点是,该决定是基于您从中获得多少收益与与特定 IDE 绑定之间的权衡。
所以这取决于。
对于“社区项目”,通常每个开发人员都会使用不同的 IDE 和不同版本的 IDE,我建议不要签入这些文件。否则,不使用您的 IDE 和您的 IDE 版本的开发人员会很痛苦。
对于大型“企业项目”,IDE 和 IDE 版本不是由开发人员自由选择的,而是由项目管理人员严格规定的。诸如编译器(1)、代码格式、验证规则、警告和错误配置、自定义内部插件配置和许多其他内容也是如此。其中许多东西不能在 pom.xml 中设置(也不应该设置,因为 Maven 不是 IDE,而是一个构建工具)。所以在这种情况下,我建议检查这些文件并责怪遵守规定的开发人员,因为他试图不听从指令。
(注意,本案中我故意使用了“口授”和“责备”等词语,因为企业项目的项目管理人员不仅有“口授”和“责备”的权利,而且还有义务)
另一方面,对于一个人的项目,你不必担心你的同事,所以去检查他们。
但关键是你必须知道你的情况和后果,然后自己决定。
(1) 不,“maven.compiler.source”不是要使用的编译器。