Порядок загрузки для простого проекта Maven в Eclipse и Subversion?

Я нашел в Интернете много информации о модных настройках maven, но, поскольку Maven новичок, это не совсем понятно на уровне «привет, мир».

Цель: создать единый простой проект Maven из Eclipse и зарегистрировать его в нашем репозитории Subversion. Отметьте правильные файлы и не включайте вещи, которые не следует регистрировать. Шаг 2 - получить вторую рабочую станцию ​​Eclipse, также работающую над тем же проектом.

Предостережения: Да, я относительно новичок в Maven. И не-maven загрузка между Eclipse и SVN не всегда на 100% ясна для меня.

Система:

  • OS X Snow Leopard с Java 1.6 по умолчанию
  • Eclipse 3.6 и недавно установленные плагины
  • Subclipse и версия SVN Collab.net - рабочие
  • m2eclipse, также работает
  • Командная строка mvn работает, локальный репозиторий, можно создавать проекты
  • Репозиторий Subversion через https

Я не буду утомлять вас всеми своими фальстартами, но это краткое изложение текущего состояния:

  • Создал проект на нашем сервере SVN с URL-адресом вида https://foo.com/svn/PROJECTONE/trunk
  • Создайте проект Maven из Eclipse с помощью m2eclipse вместо борьбы с инструментом командной строки (по крайней мере, во время обучения)
  • Начните с пустой рабочей области Eclipse и примите расположение по умолчанию для нового проекта.
  • Мастер создания нового проекта, проект maven, используя maven-archtype-quckstart, назовите его ProjectOne
  • В редакторе POM введите URL-адрес SCM с URL-адресом Subversion выше, https://foo.com/svn/PROJECTONE/trunk
  • Измените программу Maven по умолчанию App.java, измените строку Hello World, убедитесь, что она работает

Вот некоторые вещи, которые я считаю странными: (очевидно, я что-то неправильно понимаю)

  • В редакторе POM, теперь, когда я заполнил URL-адрес SCM своего репозитория SVN, я ожидал, что он предложит проверить мой код. Нет предложений, и я не заметил никаких дополнительных опций. Вопрос: В чем тогда смысл этого поля? Учитывая концепцию maven, ориентированную на задачи, и то, что он спрашивает о моем URL-адресе, не будет ли синхронизация файлов частью этого?
  • Я решил сделать это вручную, щелкнул правой кнопкой мыши по проекту и в разделе «Команда» сообщил ему об URL-адресе SVN, он предупреждает, что каталог уже существует, я говорю «ОК», и теперь каталоги связаны.
  • Затем я запускаю процесс регистрации и замечаю, что Subclipse предлагает некоторые файлы в .settings. Разумеется, двоичные файлы рабочей области Ecliipse не следует регистрировать, и похоже, что один из плагинов решил не включать каталог сборки (?), Но не уверен в этих файлах. Вопрос: В какой степени Maven обновляет свойства svn: ignore, если таковые имеются? Или Subclipse обновляет svn: ignore на основе настроек проекта Eclipse, поскольку он знает и то, и другое?

Основные вопросы:

  • Что было бы «лучшей практикой» для начальной загрузки одного нового проекта Maven в Eclipse и Subversion? Какие задачи идут в первую очередь?
  • Что было бы «лучшей практикой» для переноса этого проекта на вторую рабочую станцию ​​Eclipse, предполагая, что там есть все плагины?
  • Какие плагины (m2eclipse, subclipse и т. Д.) Обновляют svn: ignore?
  • Когда редактор POM спрашивает об URL-адресе SCM, для чего он использует эту информацию?
  • Должен ли я включать «ствол» в этот URL-адрес SCM?
  • Следует ли включать название проекта в URL-адрес SCM?
  • Должен ли я сначала создать каталог проекта в репозитории? Или я должен был позволить одному из плагинов создать его?
  • Распознают ли m2eclipse и subclipse друг друга? Или, что более вероятно, основные системы maven и subversion знают что-нибудь друг о друге? Например, знает ли maven о svn: ignore? Я бы не ожидал, что Subversion много знает о maven, это кажется неправильным направлением.

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


person Mark Bennett    schedule 26.02.2011    source источник
comment
хорошо написан. Слишком долго. Может быть хорошей идеей написать сообщение в блоге с ответом на этот вопрос и вставить ссылку сюда на выходных. :)   -  person Nishant    schedule 26.02.2011
comment
Хорошая точка зрения. Отдельно всплыл один вопрос. Я перенесу другую часть, когда пройдет 20-минутное окно.   -  person Mark Bennett    schedule 26.02.2011
comment
Позже я вынес еще один вопрос в отдельную тему.   -  person Mark Bennett    schedule 27.02.2011


Ответы (2)


Насколько я знаю...

Maven почти не имеет ничего общего с SVN [РЕДАКТИРОВАТЬ: для вашей цели], забудьте на данный момент о Maven SCM, поскольку он вам сейчас не нужен.

Чтобы Maven и Eclipse работали вместе, вам нужно заставить их использовать один и тот же путь к классам и выходной каталог, и это то, что правильно настроенный плагин сделает за вас. Это также позволит вам выполнять задачи Maven (выполнение задач и т. Д.) Внутри Eclipse.

Клиент Subversion отслеживает вносимые вами изменения и позволяет выполнять задачи Subversion (синхронизация, обновление, проверка, фиксация и т. Д.). Subclipse - это плагин Eclipse Subversion.

После того, как вы заставили Maven и Eclipse работать вместе, используйте SVN (Subclipse или что-то еще) для совместного использования файлов вашего проекта, включая pom.xml, .classpath, .project, и могут быть .settings, но исключая все производные файлы (вывод компилятора и т. Д.).

person Ali Shakiba    schedule 26.02.2011
comment
Спасибо за ответ. Мне было любопытно, где вы говорите ... забудьте на данный момент о Maven SCM, поскольку он вам сейчас не нужен - если это не то, для чего он нужен, то это кажется странным. Возможно, это помогает с ветвлением, слиянием, тегированием или чем-то еще, но даже тогда кажется, что просто проверка правильности URL-адреса и синхронизация текущей версии будет подмножеством всего этого. Для чего это, черт возьми? (Я могу еще немного поискать в Интернете, но если вы знаете что-то в голову, это было бы круто) - person Mark Bennett; 27.02.2011
comment
На самом деле он вам не нужен для поставленной цели. Но чтобы узнать, как это может вам помочь, посмотрите: wiki.gxdeveloperweb.com/confluence/display/GXDEV/, и вы можете найти множество примеров использования scm в файлах pom.xml локального репозитория (maven). - person Ali Shakiba; 28.02.2011
comment
@Mark Bennett Между прочим, я не предлагаю фиксировать файлы проекта Eclipse в репозитории svn. Лучше просто поделиться файлом pom.xml, а затем использовать его для создания конкретного проекта IDE. - person Ali Shakiba; 28.02.2011

Какие плагины (m2eclipse, subclipse и т. Д.) Обновляют svn: ignore? рекомендуют как m2eclipse, так и subclipse.

Что касается игнорирования svn, у вас есть два способа игнорировать артефакты, сгенерированные eclipse, когда вы проверяете свой источник:

  1. Использование Subclipse

    Щелкните правой кнопкой мыши -> Команда -> Установить свойство. В Введите свойство введите следующие свойства:

    • target
    • .classpth
    • .настройки
    • .проект
    • .wtpmodules
  2. Использование Svn

    $ svn propset svn:ignore 'target .classpath .settings .project .wtpmodules' .
    $ svn commit -m"remove eclipse artifacts" .
    

Когда редактор POM спрашивает об URL-адресе SCM, для чего он использует эту информацию?

SCM можно использовать для отчетов или с плагином Maven Release. Плагин автоматизирует весь процесс выпуска.

Должен ли я сначала создать каталог проекта в репозитории? Или я должен был позволить одному из плагинов создать его?

Вы можете создать макет каталога, используя архетип, предоставленный плагином archetype:.

person Community    schedule 10.06.2011
comment
Спасибо! Мне нужно интегрировать все комментарии и вопросы в свои заметки, чтобы увидеть, есть ли у меня полная цепочка. С точки зрения высокого уровня: запуск нового совершенно нового проекта Eclipse в новом рабочем пространстве Eclipse, Maven и Subversion и все передовые практики. Этот кажется чем-то, что сделали бы все, но я еще не видел краткого рецепта. - person Mark Bennett; 18.06.2011