Как автоматически устанавливать пути сборки в Eclipse - PullRequest
1 голос
/ 04 октября 2009

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

Есть ли в Eclipse способ автоматически помещать импортированные библиотеки после обновления из SVN? Я слышал о файлах сборки (Ant, Maven), но я действительно не уверен, что смотрю правильно.

Ответы [ 5 ]

9 голосов
/ 04 октября 2009

Как насчет этого: Не фиксировать локальные файлы пути к классам в хранилище как ".classpath" .

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

5 голосов
/ 05 октября 2009

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

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

Даже лучше, чем переменные библиотеки. Вы можете определить пользовательские библиотеки (ниже Window->Preferences->Java->Build Path->User Libraries) для ссылки на ваши общие компоненты, а затем повторно использовать эти библиотеки в каждом проекте. Настроенная библиотека может быть экспортирована со страницы User Libraries и использована вашими коллегами.

Плагины, такие как m2eclipse , предоставляют библиотеки (также известные как контейнеры пути к классам), которые могут автоматически генерировать контент на основе некоторой конфигурации (POM Maven в случае m2eclipse). Это абстрагирует пути к базовым ресурсам и позволяет динамически добавлять несколько jar-файлов к пути.

Если вы не используете Maven, типичная проблема .classpath заключается в том, что вы хотите добавить все jar-файлы в папке в classpath. Этот ответ показывает, как можно определить собственный плагин для добавления всех jar-файлов в папку через контейнер Classpath. Вы также можете использовать этот подход, чтобы автоматически присоединять источники к обнаруженным элементам и избегать повторения этого усилие каждый раз.

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

До:

<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/xml-apis.jar" sourcepath="C:/apache-ant-1.7.1/src/main"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant.jar" sourcepath="C:/apache-ant-1.7.1/src/main"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-antlr.jar" sourcepath="C:/apache-ant-1.7.1/src/main"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-bcel.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-bsf.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-log4j.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-oro.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-regexp.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-resolver.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-commons-logging.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-commons-net.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jai.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-javamail.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jdepend.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jmf.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jsch.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-junit.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-launcher.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-netrexx.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-nodeps.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-starteam.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-stylebook.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-swing.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-testutil.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-trax.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-weblogic.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/xercesImpl.jar"/>
* * После того, как тысяча двадцать-одиной: * * тысяча двадцать-дв
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<!--all ant jars and source attachments defined here -->
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ant"/>
3 голосов
/ 04 октября 2009

Плагин управления зависимостями maven и maven eclipse был бы одним из решений.

После настройки maven вы можете создавать файлы .project и .classpath с помощью модуля eclipse. Эти файлы не будут зарегистрированы (вся информация находится в файле maven pom).

0 голосов
/ 04 октября 2009

Муравей + Плющ - другое решение. Насколько я знаю, нет задачи плюща -> затмения. Мы использовали ant + ivy в одном из наших проектов и создали файлы .classpath и .project из метаданных ivy. (Это был ivy 1.x, может быть, ivy 2 уже способен сделать это.) Это аналогично подходу maven.

0 голосов
/ 04 октября 2009

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

...