Терпите меня, я перехожу из Ant в Maven2: мне кажется, я столкнулся с одной из тех мелочей, которые были просты в Ant, но не так в Maven ...
Как справиться с разницей между локальным развертыванием и созданием архива / пакета для распространения на другую машину?
Давайте предположим, что вывод моего проекта - EAR плюс некоторые дополнительные конфигурационные файлы. разработчик , который активно работает над проектом, должен будет часто развертывать и повторно развертывать на своем локальном сервере приложений (скажем, JBoss), а Integration Engineer , который разрабатывает для QA / production понадобится только для создания окончательной архивной сборки (tar / gz).
В Ant у нас было две цели для этого: «dev-deploy» и «bundle». Оба выполняют полную сборку, но отличаются на последнем шаге: «dev-deploy» копирует файлы EAR и конфигурации в соответствующие локальные папки, тогда как «bundle» просто помещает файлы EAR & config в сборку tar.gz.
Как вы делаете это в Maven?
Я видел, что плагин сборки может создавать либо архивы (tar, gz и т. Д.), Либо разнесенные каталоги (из одного и того же дескриптора сборки). Я могу вызвать либо сборка: сборка , либо сборка: каталог , но для последнего, как мне скопировать окончательный вывод в локальные папки развертывания JBoss? Из связанного поста кажется, что специальное копирование файлов не совсем то, чем занимается Maven, так что antrun-копия, вероятно, является наиболее подходящей?
Наконец, поскольку тип сборки может отличаться в зависимости от того, кто ее вызывает, не кажется разумным привязывать сборку к жизненному циклу сборки, не так ли? Но это означает, что разработчику всегда нужно будет вызывать 'mvn package' , а затем 'mvn assembly: directory' , чтобы пересобрать и протестировать изменение. И наоборот, Интеграционному инженеру всегда нужно будет запустить 'mvn package' , а затем 'mvn assembly: assembly' для создания распространяемого архива. Я надеялся на решение с одной командой для каждого, или я должен просто написать его?