我正在运行一个由多个模块组成的开源Java项目,这些模块存在依赖关系树中的子目录中,存储在Subversion仓库中。对于我们项目的新手来说,在Eclipse中手动设置所有这些内容需要花费很多工作量。
并非所有的开发人员都使用Eclipse。尽管如此,我们考虑只需将.classpath和.project文件检入以帮助新手开始工作。这是一个好主意吗?还是会导致这些文件的不断冲突?是否有其他方法可以使该项目在Eclipse上轻松设置?
我正在运行一个由多个模块组成的开源Java项目,这些模块存在依赖关系树中的子目录中,存储在Subversion仓库中。对于我们项目的新手来说,在Eclipse中手动设置所有这些内容需要花费很多工作量。
并非所有的开发人员都使用Eclipse。尽管如此,我们考虑只需将.classpath和.project文件检入以帮助新手开始工作。这是一个好主意吗?还是会导致这些文件的不断冲突?是否有其他方法可以使该项目在Eclipse上轻松设置?
毫无疑问,正如我在“你是否将项目文件保留在版本控制下?”中所说的那样。
"加载它,设置它,开始吧。"
但是...这只适用于最近的Eclipse3.5设置,其中构建路径支持相对路径:
而Eclipse3.6将更好,因为它在Linked Resources
中支持路径变量的相对路径:
(自3.6M5以来)
绝对不行 - 通过Subversion分发项目文件通常是一个糟糕的主意。特别是因为某些人可能以一些奇怪的方式修改它们。在项目文档中编写一个好的页面是一个更好的主意。我们的项目还有许多模块和复杂的设置。我们设置了一个Confluence页面,描述如何在每个流行的IDE上开始使用该项目 - IntelliJ、Eclipse、NetBeans。Subversion中的README文件包含相同的信息。
我投反对票,因为我通常会从Maven生成这些文件。
根据我的经验,除了仅涉及本地设置的有限情况外,所有内容都应该放在源代码控制中。源代码控制的法则是,所有推送进去的内容都应该能被拉取出来的人正常工作。不幸的是,eclipse 经常会将这些内容放在 .classpath
文件中:
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>
我会检查这些文件,以使新用户的入门尽可能容易。最好的情况是用户可以检出项目并能够在不需要额外知识的情况下运行它。对于这些文件,规则与项目中的其他文件相同:要小心处理。您不应该在源代码中放置绝对路径,也不应该在配置文件中放置。
如果文件以一种使得项目从头开始运行的方式进行检入,则不需要花费太多力气来更改它们。
如果文件中不包含绝对路径和其他直接与单个开发环境相关的数据,我建议您将它们检入到Subversion。
如果文件中包含绝对路径等内容,则最好选择README文件。
是的,一定要将它们检入,但确保记录任何路径依赖,并尽可能避免使用绝对路径。
如果您不检入它们,则检出项目的任何人都需要重新创建所有这些设置,这很麻烦,可能会出错。
一些复杂的设置可能更适合使用脚本来生成这些文件,但通常最好只是将它们检入。