Как поделиться файлами между несколькими проектами Eclipse, используя SVN? - PullRequest
2 голосов
/ 10 апреля 2011

Немного контекста: я тренируюсь с предыдущими выпусками Google Code Jam и пытаюсь решить многие из этих головоломок на Java. Для каждой головоломки я создаю определенный проект в Eclipse.

Я также создал небольшой проект "Sample", содержащий обычные операции над файлами ввода / вывода, обработку тестовых случаев, файлы сценариев для быстрого запуска программы над файлом и так далее. Теперь я использую этот фреймворк в каждой головоломке, просто модифицируя базовый класс «Solver», который содержит основной алгоритм. Все остальные файлы остаются неизменными в каждом проекте.

Моя проблема в том, что я работаю с версиями, но очевидно, что единственный исходный код, соответствующий версии для каждого проекта, - это класс Solver (и некоторые файлы ввода / вывода). Все остальное дублируется, и я бы хотел, чтобы оно легко обновлялось при изменении чего-либо в примере проекта.

С другой стороны, я хочу иметь возможность легко оформить проект и получить его полностью работоспособным.

Я думал об использовании внешних SVN для этого, но внешние определения применяются только к подкаталогам - и мои соответствующие файлы находятся в тех же папках, что и дублированные.

Кроме того, игнорирование SVN не отвечает моим целям, потому что мне все равно придется вручную реплицировать любые изменения в моем примере проекта на протяжении каждого проекта.

Знаете ли вы о хорошем способе справиться с этим? Спасибо!

Ответы [ 2 ]

3 голосов
/ 10 апреля 2011

Повторное использование кода обычно выполняется не с помощью системы контроля версий, а с использованием полиморфизма или библиотек. Одним из недостатков использования системы контроля версий является необходимость обновления svn для извлечения новых внешних файлов из хранилища, что кажется мне неловким, если у вас проверено много проектов. Еще одна вещь, которую следует учитывать, - это процесс разработки при изменении повторно используемого кода. Чтобы протестировать ваши изменения, вы, вероятно, захотите запустить их с определенным решателем, но для этого вам нужно выполнить svn update - и я уверен, что вы будете время от времени забывать об этом и удивляться, почему ваше исправление не дает эффекта ... Поэтому я рекомендую один из следующих двух подходов:

Полиморфизм

Поместите все ваши решатели в один проект, что делает повторное использование довольно тривиальным. Чтобы вызвать правильный решатель, вы можете сделать что-то вроде:

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 щелкните правой кнопкой мыши проект -> путь сборки -> настроить путь сборки -> проекты -> добавить). Испытательный жгут будет создавать решатель так же, как в растворе полиморфизма.

2 голосов
/ 10 апреля 2011

Вы также можете использовать svn: externals с файлами (начиная с 1.6), но я бы подумал о решении на основе библиотеки, потому что звучит так, будто ваш "фреймворк" - такая вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...