Инициализация ртутного хранилища из архетипа Maven - PullRequest
2 голосов
/ 09 января 2012

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 09 января 2012

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

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

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

0 голосов
/ 09 января 2012

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

0 голосов
/ 09 января 2012

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

...