2011-04-10 106 views
2

有点背景:我正在练习Google Code Jam的前版本,并试图解决Java中很多这些难题。对于每个难题我都会在Eclipse中创建一个特定的项目。如何使用SVN在多个Eclipse项目之间共享文件?

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

我的问题是,我的版本我的工作,但很明显,唯一相关的源代码版本为每个项目是这样解算器类(和一些输入/输出文件)。其余的都是重复的,我希望在修改示例项目中的某些内容时可以轻松更新它们。

在另一方面,我希望能够轻松地签一个项目,并把它充分的工作。

我想使用SVN的外部要做到这一点,但外部定义只适用于子目录 - 和我的相关文件都在同一个文件夹,复制的人。

而且SVN忽略不履行我的目的,因为我仍然需要手工复制整个每个项目的任何改变我的样本项目。

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

回答

3

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

多态性

把所有的求解器在同一项目中,使重用相当琐碎。要调用正确的求解器,你可以这样做:

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中,右键单击项目 - >构建路径 - >配置构建路径 - >项目 - >添加)。测试工具将以与多态性解决方案相同的方式创建求解器。

+0

我喜欢你的多态性解决方案。我的框架已经建立在由每个特定求解器实现的求解器接口上,但是随后在每个项目的主要方法中使用特定求解器进行硬编码,导致非常相似但不相同的代码。我将使用您的解决方案并将所有内容都传递给一个项目,让批处理文件提供特定的求解器类。非常感谢你! – Dunaril 2011-04-10 13:12:36

2

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

相关问题