你如何处理不同的Java IDE和svn?

您如何确保可以将代码签入Eclipse或NetBeans并在其中使用它?

编辑:如果您没有签入与ide相关的文件,则每次签出项目时都必须重新配置buildpath,includes和所有这些内容。 我不知道,如果ant(特别是从eclipse创建/导出的ant构建文件)将无缝地与其他ide一起使用。

聪明的答案是“通过这样做” – 除非你不使用多个IDE,否则你不知道你是否真的准备好使用多个IDE。 诚实。 🙂

我总是看到多个平台更麻烦,因为它们可能使用不同的编码标准(例如,Windows可能默认为ISO-8859-1,Linux为UTF-8) – 对我而言,编码引起了比IDE更多的问题。

更多指针:

  • 您可能希望使用Maven( http://maven.apache.org ),让它生成IDE特定文件,并且永远不会将它们提交给源代码控制。
  • 为了确保您正在生成正确的文物,您应该有一个专用的服务器来构建您的可交付物(例如cruisecontrol),或者在ant,maven或任何其他工具的帮助下。 这些可交付成果是在开发机器之外进行测试的。 让人们意识到自己机器外面还有另一个世界的好方法。
  • 禁止在源代码管理中找到的任何IDE特定文件中包含任何特定于计算机的路径。 始终按逻辑路径名引用外部库,最好包含其版本(如果不使用maven)

实际上我们现在为SVN中的代码维护一个Netbeans和一个Eclipse项目,没有任何麻烦。 Netbeans文件不会踩到Eclipse文件。 我们的项目结构如下:

sample-project + bin + launches + lib + logs + nbproject + src + java .classpath .project build.xml 

最重要的点似乎是:

  • 禁止IDE的项目文件中的任何绝对路径。
  • 设置项目文件以将类文件输出到同一目录。
  • svn:忽略.nbproject目录中的私有目录。
  • svn:忽略用于IDE的类文件输出的目录以及任何其他运行时生成的目录,如上面的logs目录。
  • 让人们始终如一地使用两者,以便快速解决差异。
  • 还要维护独立于诸如cruisecontrol之类的IDE的构建系统。
  • 使用UTF-8并立即纠正任何编码问题。

我们正在开发Fedora 9 32位和64位,Vista和WindowsXP,大约一半的开发人员使用一个IDE或另一个。 少数人使用两者并定期来回切换。

最好的事情可能是提交任何IDE相关文件(例如Eclipse的.project),这样每个人都可以检查项目并按照自己的意愿做任务。

话虽这么说,我猜大多数IDE都有自己的配置文件方案,所以也许你可以在没有任何冲突的情况下提交它,但是它感觉很麻烦。

在大多数情况下,我同意seldaek,但我也倾向于说你应该至少提供一个文件,说明依赖项是什么,用于编译的Java版本等等,以及NetBeans的其他任何内容/ Eclipse开发人员可能需要在他们的IDE中编译。

我们目前只使用Eclipse,因此我们将所有Eclipse .classpath .project文件提交给svn,我认为这是更好的解决方案,因为这样每个人都能够重现错误,而不是轻易地重复使用IDE细节。

我的理念是构建应该采用“最小公分母”的方法。 源代码控制的内容是构建所需的内容。 虽然我只使用Eclipse开发,但我的构建是在命令行使用ant。

关于源代码控制,我只从命令行中检查对构建至关重要的文件。 没有Eclipse文件。 当我设置一个新的开发机器(似乎每年两次)时,需要花费一点力气让Eclipse从一个ant构建文件导入项目,但没什么可怕的。 (理论上,对于其他IDE,这应该是一样的,不是吗?他们必须能够从ant导入吗?)

我还记录了如何设置一个最小的构建环境。

我使用maven,只检查pom和来源。
签出项目后,我运行了mvn eclipse:eclipse
我告诉svn忽略生成的.project等。

这是我做的:

  1. 仅在源代码管理中维护您的ant构建脚本和关联的类路径。 Classpath可以在ant脚本中显式,属性文件或由ivy管理。
  2. 编写一个ant目标,从ant类路径生成Eclipse .classpath文件
  3. Netbeans将使用您的构建脚本和类路径,只需通过自由格式项目进行配置即可。

这样你就可以获得独立于IDE的构建脚本和开发人员:)

netbeans网站上有关于如何做的博客3.但我现在找不到它。 我已经在我的网站上做了一些关于如何进行上述操作的注意事项 – 链接文本 (虽然快速而丑陋,对不起)

请注意,如果您使用Ivy(一个好主意)和eclipse,您可能会想要使用eclipse常春藤插件。 我已经习惯了,发现它非常多而且不可靠。 最好使用2.以上。