Как я могу указать запись Eclipse .classpath для конкретной платформы O / S? - PullRequest
7 голосов
/ 30 января 2009

Я работаю над проектом SWT как часть команды. Мы постоянно нарушаем среду сборки друг друга, потому что файл Eclipses .classpath проверяется на контроль версий, и мы включаем различные библиотеки SWT для наших машин.

В зависимости от того, кто совершил последнее, запись .classpath может быть:

<classpathentry kind="lib" path="lib/swt/swt-win32.jar"/>

или

<classpathentry kind="lib" path="lib/swt/swt-carbon.jar"/>

или

<classpathentry kind="lib" path="lib/swt/swt-gtk.jar"/>

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

У кого-нибудь есть идеи, как это сделать? Моя первоначальная идея состояла в том, чтобы разделить это на собственный файл «.classpath-swt» (игнорируемый VCS), автоматически сгенерировать его с помощью Ant и включить его в основной .classpath, но, похоже, Eclipse не поддерживает разбиение .classpath file.

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

Любые предложения будут высоко оценены, если они не "не используют Eclipse", поскольку это не вариант для этого проекта:)

Ответы [ 4 ]

9 голосов
/ 30 января 2009

Eclipse позволит вам определять переменные classpath, чтобы вы могли сохранить .classpath таким же, но каждый разработчик настраивал свой Eclipse в соответствии с платформой. По крайней мере, тогда вы можете создать версию файла .classpath. Вам придется изменить структуру каталогов, в которой вы храните ваши файлы SWT, так, чтобы имя банки не менялось для каждой платформы. Это меню можно найти в: " Окно-> Настройки-> Java-> Путь сборки "

SWTJARDIRECTORY/
    WIN32/
        SWT.JAR
    CARBON/
        SWT.JAR
    GTK/
        SWT.JAR

Ex.

    SWT_PLATFORM="SWTJARDIRECTORY/GTK", set by developer in Eclipse

.classpath

    SWT_PLATFORM/SWT.JAR
1 голос
/ 30 января 2009

У вас должны быть эти библиотеки в отдельном, легко идентифицируемом проекте, а не помещаться в каждый проект.

например. создайте проект с именем «00-swt-provider» (чтобы он шел сверху) и пусть он ссылается на один из «00-swt-provider-carbon», «00-swt-provider-win32» или «00-swt-provider -gtk».

Любой из них экспортирует соответствующие нативные библиотеки для данной платформы, и единственная ссылка находится в 00-swt-provider. Фактический проект ссылается только на этот метапроект.

Мы используем вариант этого для внутренних целей - он хорошо работает для нас.

0 голосов
/ 10 марта 2009

SWT делает это путем не контроля версий файла .classpath, а путем версий нескольких отдельных файлов .classpath_ * с добавленной операционной системой и оконной системой, например, .classpath_win32_win32. Таким образом, когда вы извлекаете источники из репозитория, вы должны скопировать соответствующий файл classpath в .classpath и перекомпилировать ваш проект.

0 голосов
/ 30 января 2009

Как насчет простой настройки ваших собственных экземпляров, и для этого одного компонента вашей среды вы не сохраняете его в своем контроле исходного кода?

В качестве альтернативы вы можете сохранить файл classpath для каждой среды, возможно, в другом каталоге и в файле ant, то есть в файле build-setup-env.xml, вы можете просто иметь одну цель для каждой среды, которая копирует правильную копию. Что касается сохранения этой копии в системе управления версиями, вам обязательно нужно будет скопировать ее обратно при обновлении.

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