我们如何处理不同的Java IDE和svn?
如何确保可以将代码检出到Eclipse或者NetBeans中并在其中使用?
编辑:如果不签入与ide相关的文件,则每次签出项目时,都必须重新配置buildpath,包括所有这些内容。我不知道ant(尤其是从eclipse创建/导出的ant buildfile)是否可以与其他ide无缝配合使用。
解决方案
回答
最好的办法可能是不要提交任何与IDE相关的文件(例如Eclipse的.project),这样每个人都可以签出项目并按自己的意愿去做。
话虽这么说,我想大多数IDE都有自己的配置文件方案,因此也许我们可以提交所有文件而不会发生任何冲突,但是imo感觉很混乱。
回答
在大多数情况下,我会同意seldaek的意见,但我也倾向于说,我们至少应提供一个文件,说明依赖项是什么,要使用的Java版本等,以及NetBeans之外的任何内容/ Eclipse开发人员可能需要在其IDE中进行编译。
目前,我们仅使用Eclipse,因此我们将所有Eclipse .classpath .project文件都提交给svn,我认为这是更好的解决方案,因为那样每个人都能够重现错误,而不是轻而易举,而不必费心使用IDE细节。
回答
聪明的答案是"这样做",除非我们不使用多个IDE,否则我们不知道我们是否真的准备好使用多个IDE。诚实的。 :)
我总是看到多个平台比较麻烦,因为它们可能使用不同的编码标准(例如Windows可能默认为ISO-8859-1,Linux可能为UTF-8),这给我带来了比IDE多得多的问题。
一些更多的指针:
- 我们可能想使用Maven(http://maven.apache.org),让它生成IDE特定的文件,并且永远不要将其提交给源代码管理。
- 为了确保我们生成正确的伪像,我们应该拥有一个专用服务器,借助ant,maven或者任何其他工具来构建可交付成果(例如cruisecontrol)。这些可交付成果是在开发机器之外进行测试的。使人们意识到自己的机器之外还有另一个世界的好方法。
- 禁止在源代码管理中找到的任何特定于IDE的文件中包含任何特定于计算机的路径。始终通过逻辑路径名引用外部库,最好包含它们的版本(如果不使用maven的话)
回答
我的哲学是构建应使用"最低公分母"方法来完成。进行源代码管理的是构建所需的内容。虽然我仅使用Eclipse进行开发,但是我的构建是通过命令行使用ant进行的。
关于源代码控制,我仅从命令行检入对构建至关重要的文件。没有Eclipse文件。当我安装一台新的开发机器(似乎一年两次)时,要使Eclipse从一个蚂蚁构建文件中导入该项目需要一点点努力,但并不令人害怕。 (理论上,这对于其他IDE应该也一样,不是吗?难道它们必须能够从ant导入吗?)
我还记录了如何设置最低限度的构建环境。
回答
我使用Maven,仅检查pom和源。
签出项目后,我运行mvn eclipse:eclipse
我告诉svn忽略生成的.project等。
回答
实际上,我们现在在SVN中为我们的代码维护了一个Netbeans和Eclipse项目,一点也不麻烦。 Netbeans文件不在Eclipse文件上。我们的项目结构如下:
sample-project + bin + launches + lib + logs + nbproject + src + java .classpath .project build.xml
最大的问题似乎是:
- 禁止在两个IDE的项目文件中使用任何绝对路径。
- 设置项目文件以将类文件输出到同一目录。
- svn:忽略.nbproject目录中的私有目录。
- svn:忽略用于从IDE输出类文件的目录以及任何其他运行时生成的目录,例如上面的logs目录。
- 让人们始终如一地使用两者,以便快速解决差异。
- 还维护一个独立于IDE的构建系统,例如cruisecontrol。
- 使用UTF-8并立即更正所有编码问题。
我们正在Fedora 9 32位和64位,Vista和WindowsXP上进行开发,大约一半的开发人员使用一个IDE或者另一个。少数人同时使用它们并定期来回切换。
回答
这是我的工作:
- 仅在源代码管理中维护ant构建脚本和关联的类路径。类路径可以在ant脚本,属性文件中是显式的,也可以由ivy管理。
- 编写一个ant目标以从ant类路径生成Eclipse .classpath文件
- Netbeans将使用构建脚本和类路径,只需通过自由格式项目对其进行配置即可。
这样,我们可以获得独立于IDE的构建脚本和高兴的开发人员:)
在netbeans网站上有一个关于如何执行操作的博客。3.我现在找不到它。我已经在我的网站链接文本中添加了一些有关如何执行上述操作的注意事项(虽然很快又很丑,对不起)
请注意,如果我们使用的是Ivy(一个好主意)和eclipse,则可能会想使用eclipse ivy插件。我用过它,发现它是令人毛骨悚然的越野车,而且不可靠。最好在上面使用2.