允许程序员团队在同一个项目中使用Netbeans,Eclipse和IntelliJ的最佳方法是什么,从而消除了“哪个IDE更好”的问题。
应该或不应该将哪些文件签入源代码控制?
答案 0 :(得分:10)
我认为最好的方法是使构建过程独立于IDE。这意味着您的项目不应该依赖任何特定于IDE的文件来构建,而是使用外部构建系统,如Apache Maven,Apache Ant,甚至是make或自定义脚本。大多数流行的Java IDE都可以直接或通过插件支持Maven。
如果您不想使用外部构建系统,至少应该使项目易于设置(即通过为共享库和其他依赖项提供标准文件夹)。当我在过去使用多个IDE的团队工作时,我花了最多的时间来解决依赖关系,因为构建项目的先决条件随着时间的推移而变化。在最糟糕的情况下,您甚至可能最终没有从版本控制存储库中获取最新版本的开发人员,因为他们认为设置新项目是一件麻烦事。
如果您的项目有很多库依赖项,我认为最好在版本控制存储库中以二进制形式提供这些库。这样人们就不必解决依赖关系的所有依赖关系等等,只是为了构建一个项目。但是,这确实要求您有人负责保持“官方”二进制文件在更改时保持最新状态。 (这与Maven存储库使用的理念基本相同,但即使不使用Maven,也可以手动应用这些原则。)
答案 1 :(得分:6)
嗯,这是一个非常自我回答的问题。
不检查源代码控制的文件是与IDE本身有关的文件。
让开发人员生成这些文件。
如果您使用Maven,它可以为您生成Eclipse的.project
和.classpath
等文件。 Eclipse通常很容易使用基本文件结构(使用新的Java Project
选项)。
我认为Maven也支持Netbeans,但不确定IntelliJ。
Maven的网站是maven.apache.org。
答案 2 :(得分:5)
对于每个拥有多个开发人员的IDE,请签入所有支持文件。为什么要在每个办公桌上重新发明轮子。
我已经使用许多不同的IDE完成了这项工作,而且我还没有看到文件名冲突。
事实上,即使只有一个开发人员使用特定的IDE,他/她也有利于对支持文件进行版本控制,原因与您在开发环境中对其他文件进行版本控制的原因相同:历史,差异,评论等等。
答案 3 :(得分:4)
对于Eclipse,那将是.classpath和.project文件。
我的团队使用Maven,不鼓励开发人员检查特定于Eclipse的文件。因为它们可以从Maven生成,所以这些文件是多余的。
此外,检查项目特定的文件似乎可以节省时间,但由于不同开发人员工作站的变化,它通常会很痛苦,导致浪费时间解决IDE特定文件中的冲突。解决这个问题的唯一方法是强迫每个人以相同的方式设置他们的环境,这与IDE不可知的方法相悖。
答案 4 :(得分:3)
在同一个项目团队中使用多个工具集时需要考虑很多因素。例如,我的团队让Java开发人员使用IntelliJ和大多数使用eclipse的前端(JSP / CSS / HTML)开发人员。我们正在将Eclipse用户迁移到IntelliJ,因为我们开发了一些为我们的环境提供扩展支持的IntelliJ插件。我们不打算为多个平台开发插件,因此我们正在全面标准化IntelliJ。
就特定文件而言,我可以与IntelliJ交谈。我们检查了.ipr文件和.iml文件。不要签入.iws文件。如果您还有Eclipse用户,请将IntelliJ项目配置为在.classpath文件中读取/存储依赖项信息,并将其提交给VCS。
答案 5 :(得分:1)
我们有意支持来自同一SVN存储库的多个IDE。我们的想法是,我们希望确保,如果一个新人加入团队或有人必须开始使用新机器,我们希望他们能够检查代码库,将其导入IDE并立即进行工作 - 能够配置。
这对开发人员来说意味着他们不应该提交他们对IDE文件的更改。其他所有内容(例如,src,test,lib等)都成为我们通常每天更新和提交的集合。
另一个好处是我们完全消除了IDE战争:Netbeans和Eclipse人生活在完美的和谐中(看着IntelliJ的人,但是嘿......; - )。
答案 6 :(得分:1)
有关此主题的更多评论和解答,请参阅this question (How do you handle different Java IDEs and svn?)
答案 7 :(得分:0)
我们使用额外的扩展名重命名我们的IDE文件以进行签入.deletethis或类似。当一个新人检查项目时,他们只是剥离了额外的扩展,并且很好。这样我们就可以在人们调整环境时避免与项目文件的源代码控制冲突。而且您不必担心教育新开发人员不要检查这些文件。
答案 8 :(得分:-1)
通常情况下,我认为这是个坏主意。我不确定这是什么样的环境(也许是开源的?),但它真的很难支持多个IDE。如果这是不可避免的,我会建议的一件事是在蚂蚁脚本中标准化你的构建。如果您有大量依赖项,这可能是在所有平台上获得可预测构建的最简单方法。
如果其中一个IDE恰好是RAD(基于eclipse),则会有一个名为.settings的整个文件夹,您不希望将其包含在SCM中。