Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中为一个团队提供多IDE支持_Java_Eclipse_Ide_Netbeans_Intellij Idea - Fatal编程技术网

在Java中为一个团队提供多IDE支持

在Java中为一个团队提供多IDE支持,java,eclipse,ide,netbeans,intellij-idea,Java,Eclipse,Ide,Netbeans,Intellij Idea,允许程序员团队在同一个项目上使用Netbeans、Eclipse和IntelliJ,从而消除“哪个IDE更好”问题的最佳方式是什么 哪些文件应该或不应该签入源代码管理?好吧,这是一个非常自我回答的问题 不签入源代码管理的文件是与IDE本身有关的文件 由开发人员生成这些文件 如果您使用Maven,它可以为您生成Eclipse的.project和.classpath等文件。Eclipse通常非常容易与基本文件结构一起使用(使用新的Java项目选项) 我认为Maven也支持Netbeans,但不确定I

允许程序员团队在同一个项目上使用Netbeans、Eclipse和IntelliJ,从而消除“哪个IDE更好”问题的最佳方式是什么


哪些文件应该或不应该签入源代码管理?

好吧,这是一个非常自我回答的问题

不签入源代码管理的文件是与IDE本身有关的文件

由开发人员生成这些文件

如果您使用Maven,它可以为您生成Eclipse的
.project
.classpath
等文件。Eclipse通常非常容易与基本文件结构一起使用(使用新的
Java项目
选项)

我认为Maven也支持Netbeans,但不确定IntelliJ


Maven的站点是。

在同一个项目团队中使用多个工具集时,需要考虑很多因素。例如,我的团队有使用IntelliJ的Java开发人员和大多数使用eclipse的前端(JSP/CSS/HTML)开发人员。我们正在将Eclipse用户迁移到IntelliJ,因为我们已经开发了一些IntelliJ插件,这些插件为我们的环境提供了扩展支持。我们不打算为多个平台开发插件,所以我们正在全面标准化IntelliJ


关于具体的文件,我可以和IntelliJ谈谈。我们已签入.ipr文件和.iml文件。不要签入.iws文件。如果您也有Eclipse用户,请将IntelliJ项目配置为在.classpath文件中读取/存储依赖项信息,并将其提交给VCS。

对于具有多个开发人员的每个IDE,请检入所有支持文件。为什么要在每一张桌子上重新发明轮子呢

我已经用许多不同的IDE完成了这项工作,我还没有看到文件名冲突


事实上,即使只有一个开发人员使用特定的IDE,对支持文件进行版本化也是对他/她有利的,这与您在开发环境中对其他文件进行版本化的原因相同:历史记录、差异、注释等。

对于Eclipse,即.classpath和.project文件

我的团队使用Maven,不鼓励开发人员签入特定于Eclipse的文件。因为它们可以从Maven生成,所以这些文件是冗余的


此外,检查特定于项目的文件似乎可以节省时间,但由于不同开发人员的工作站存在差异,这通常会带来麻烦,从而浪费时间解决特定于IDE的文件中的冲突。唯一的办法是强迫每个人以相同的方式建立环境,这违背了IDE不可知的方法。

< P>典型地,我会认为这是一个坏主意。我不确定这是一个什么样的环境(也许是开源的?),但支持多个IDE真的很糟糕。如果这是不可避免的,我建议您在ant脚本中标准化您的构建。如果您有大量依赖项,这可能是在所有平台上获得可预测构建的最简单方法


如果其中一个IDE恰好是RAD(基于eclipse),则有一个名为.settings的完整文件夹,您不希望将其包含在SCM中。

我们有意支持来自同一SVN存储库的多个IDE。我们的想法是,我们希望确保,如果有新人加入团队或有人必须开始在新机器上工作,我们希望他们能够签出代码库,将其导入IDE,并立即拥有一个可工作的配置

这对开发人员来说意味着他们不应该将更改提交给IDE文件。其他所有内容(如src、test、lib等)都成为我们通常每天更新和提交的集合


另一个好处是我们已经完全消除了IDE之争:Netbeans和Eclipse的人生活在完美的和谐中(看着IntelliJ的人,但是嘿…;-)。

我认为最好的方法是使构建过程独立于IDE。这意味着您的项目不应该依赖于任何特定于IDE的文件来构建,而应该使用外部构建系统,例如,或者甚至生成或自定义脚本。Maven由最流行的JavaIDE直接或通过插件支持

如果不想使用外部生成系统,则至少应使项目尽可能易于设置(即,通过为共享库和其他依赖项设置标准文件夹)。过去,当我在使用多个IDE的团队中工作时,由于构建项目的先决条件随着时间的推移发生了变化,我花在解决依赖关系上的时间最多。在最坏的情况下,开发人员甚至可能会懒得从版本控制存储库获取最新版本,因为他们认为设置新项目非常麻烦


如果您的项目有许多库依赖项,我认为在版本控制存储库中以二进制形式提供这些依赖项是一个好主意。这样,人们就不必为了构建单个项目而解析依赖项的所有依赖项等等。不过,这确实需要有人负责在“官方”二进制文件发生更改时保持其最新状态。(这与Maven存储库使用的原理基本相同,但即使不使用Maven,也可以手动应用这些原理。)

我们重命名IDE文件,以便使用额外的扩展名签入。删除此文件或类似文件。当一个新人签出这个项目时,他们只需去掉额外的扩展就可以了。通过这种方式,我们可以避免在人们调整环境时与项目文件发生源代码管理冲突。您不必担心教育新开发人员不要签入这些文件。

有关此主题的更多评论和答案,请参阅

要在这个答案的基础上构建,请参阅。底部是Eclipse和IDE的插件