如何使用SVN在多个Eclipse项目之间共享文件?

时间:2011-04-10 09:27:21

标签: eclipse svn

一些背景信息:我正在使用Google Code Jam的前版本,并尝试用Java解决很多这些难题。对于每个谜题,我在Eclipse中创建一个特定的项目。

我还构建了一个小的“Sample”解算器项目,其中包含对输入/输出文件的常规操作,测试用例的处理,用于快速在文件上运行程序的脚本文件,等等。现在我在每个难题上使用这个框架,只需修改包含主算法的核心“Solver”类。所有其他文件在每个项目中保持不变。

我的问题是,我正在对我的工作进行版本控制,但显然每个项目版本的唯一相关源代码是此Solver类(以及一些输入/输出文件)。所有其余部分都是重复的,我希望在修改示例项目中的内容时可以轻松更新。

另一方面,我希望能够轻松签出项目并使其完全正常运行。

我正在考虑使用SVN外部代码执行此操作,但外部定义仅适用于子目录 - 我的相关文件与重复文件位于相同的文件夹中。

此外,SVN忽略不符合我的目的,因为我仍然需要在每个项目中手动复制对我的示例项目的任何更改。

你知道处理这个问题的好方法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

代码重用通常不是使用版本控制系统完成的,而是使用多态或库。使用版本控制系统的一个缺点是你必须做一个svn更新来从存储库中提取新的外部,如果你检查了很多项目,这会让我感到尴尬。另一件需要考虑的事情是修改重用代码时的开发工作流程。要测试你的更改,你可能想要使用特定的解算器来运行它们,但为了做到这一点,你需要svn更新 - 我很确定你会忘记每一次,并且想知道为什么你的bugfix没有效果...因此,我建议采用以下两种方法之一:

<强>多态性

将所有求解器放在同一个项目中,使重用变得相当简单。要调用正确的解算器,您可以执行以下操作:

interface Solver {
    // your methods
}

class Ex1Solver implements Solver {
    // your solution
}

public static void main(String[] args) throws Exception {
    Solver solver = (Solver) Class.forName(args[0]).newInstance();

    // work with solver
}

<强>库

为重用的测试工具定义一个eclipse项目,并为每个解决方案定义一个项目。将重用项目声明为解决方案项目的依赖项(在eclipse中,右键单击项目 - > gt;构建路径 - > gt;配置构建路径 - &gt;项目 - &gt;添加)。测试工具将以与多态解决方案相同的方式创建求解器。

答案 1 :(得分:2)

你也可以使用svn:externals和文件(从1.6开始),但我会想到一个基于库的解决方案,因为它听起来像你的“框架”就是这样一种东西。