2012-01-09 2 views
2

Чтобы упростить и упростить разработку, я реализовал Archetype Maven, который создает проект, специально разработанный для нашей среды. Архетип работает очень хорошо, но не удается завершить настройку в одном ключевом пункте: в сгенерированном проекте отсутствует репозиторий Mercurial.Инициализация Mercurial Repository от архетипа Maven

Есть ли способ запустить hg init с архетипа?

Основная причина этого запроса заключается в том, что я хочу уменьшить количество шагов, которые разработчики должны выполнить при создании и настройке нового продукта. Может потребоваться создать пять или более модулей, каждый из которых требует собственной регистрации. Модули не предназначены для группировки в пакеты EAR, поскольку они могут быть развернуты независимо в архитектуре.

Допустимо, что ответ будет «нет, нет решения». Речь идет об оптимизации нуля до рабочего времени с помощью автоматизации. Если он не может быть автоматизирован с использованием механизмов Maven, то я предпочел бы не реализовывать решение, чем находить подстандартное решение.

Одним из решений, которое я рассмотрел, является использование ANT-плагина для вызова hg из командной строки. Часть, которая мне не нравится в этом решении, заключается в том, что она зависит от пользователя, имеющего исполняемый файл Mercurial, доступного в пути. Это зависимость, которая может создать точку отказа. Такая точка отказа усложняет первоначальную настройку, а не упрощает ее, как предполагалось. (Эрго, почему «нет решения» является жизнеспособным ответом.)

Спасибо всем за ваши предложения!

+0

Как они могут совершать, если у них нет исполняемого файла на пути? Я не вижу, как они не могут иметь эту зависимость и как это проблема. –

+0

Ну, это хороший вопрос. Является ли то, что я прошу, даже выполнимо? Может ли Maven самостоятельно выполнять необходимые задачи? Или все решения (например, Maven SCM) зависят от установленных внешних исполняемых файлов? Пользователь, который устанавливает графический инструмент, может выполнять операции Mercurial с помощью инструмента без наличия необходимых инструментов в PATH. – 64BitBob

ответ

1

Почему бы не написать свой собственный плагин Maven, который делает hg init и все, что вам нужно? Написание базовых плагинов Maven, подобных этому, не так уж сложно.

Лично я бы get the source for the scm plugin и добавлял init цель к плагину. Это был бы самый чистый способ сделать это.

Не имея цели init в плагине scm, похоже на вопиющее упущение, на мой взгляд. Это может даже вернуть его в основной код, если вы отправляете изменения.

+0

Это неплохая идея. Если окажется, что нет плагина для достижения того, что мне нужно, возможно, я поеду по этому маршруту. Благодаря! – 64BitBob

0

Нет, что я знаю. Разве это очень важно запустить после создания hg init вручную? Или как насчет ввода сценария в архетип, который будет называться вручную. Это не меняет вещи, но вы можете определить поведение по умолчанию в нем.

+0

Сам по себе шаг не слишком сложный. Тем не менее, разработчику необходимо создать около 5 модулей из этих Archetypes, чтобы запустить и запустить новый продукт. (Между модулями существует сильное разделение ответственности.) Учитывая повторяющийся характер этих шагов, я пытаюсь уменьшить количество шагов, предпринятых как можно меньше. Больше автоматизации всегда хорошо. Использование сценария ANT для вызова вызова в командной строке. Тем не менее, я ненавижу использовать такое неуклюжее решение с Maven. Я надеялся (возможно, против надежды), что может быть лучшее решение для плагинов? – 64BitBob

+0

Может ли идея создать многомодульную структуру для уменьшения количества вызовов? – khmarbaise

+0

Наша практика (которая, как я понимаю, достаточно стандартная) заключалась в том, чтобы иметь один Maven-репо на модуль. Таким образом, ваше предложение уменьшает количество архетипов, а не количество репозиториев Mercurial. – 64BitBob

0

Почему вы хотите, чтобы каждый разработчик создавал ртутный репозиторий, используя hg init? Что вам нужно, чтобы каждый разработчик мог начать с клонирования центрального репозитория hg. Это можно сделать, используя цели maven scm plugin, такие как scm:bootstrap или scm:checkout.

+0

В этом случае Archetype используется для генерации первого экземпляра проекта. Таким образом, при выполнении этого Archetype не будет центральной регистрации. Таким образом, возникает желание создать исходный репозиторий, который может быть перенесен на центральный сервер. – 64BitBob

Смежные вопросы