Подойдет ли maven для этого сценария?
В настоящее время у нас есть проект, основанный на муравьях, и мы планируем перейти на Maven. Проект основан на Java Java, однако он имеет модульную структуру, в которой каждый модуль может содержать несколько проектов Java Java. как это:
mod1-->subdir-->war-A
-->war-B
mod1->src
mod1->build/classes
добавляется несколько таких модулей плюс некоторые зависимости jar и создается один файл EAR. + пользовательский файл манифеста
вот так
EAR -->war-A
-->war-B
-->war-C
-->war-D
lib/allclasses-from-allmodules-in-one jar
Эта структура и зависимости не могут быть изменены - она исходит из структуры, которую мы используем.
Я не знаю достаточно о maven, чтобы понять, сколько это работы, или если наш проект и практика разработки настолько далеки от соглашения maven, что оно не стоит времени.
Я понимаю, что вы можете заставить maven делать все, что захотите, но если мы сделаем переход, то это должно быть сделано, чтобы преимущества maven не делали жизнь тяжелее!:)
Еще одна важная вещь заключается в том, что я хочу, чтобы можно было создать расширенный файл ear... какие параметры у меня есть, чтобы настроить этот аспект? Что я откажусь, если я пойду с настроенным "заданием" (я не уверен, что термин maven для этого)
2 ответа
Честно говоря, я бы не стал переносить это на maven - и я говорю это, несмотря на то, что я фанат maven. Как правило, преобразование полных проектов любой сложности во время сборки в maven не стоит того, что вам придется пережить.
Для новых проектов или, возможно, переписать это приложение (если это когда-либо произойдет), я бы полностью предложил вместо этого начать с maven.
Я понимаю, что вы можете заставить maven делать то, что вы хотите - но если мы сделаем переход, то это должно быть сделано для того, чтобы преимущества maven не делали жизнь тяжелее!:)
Вы можете "согнуть мавена", чтобы делать все, что вы хотите, но обычно вы стреляете себе в ногу, когда делаете это. Суть maven в том, что это сборка по соглашению, а не по конфигурации. Чем больше вы рискуете делать что-то, что выходит за рамки жизненного цикла Maven, тем больше проблем вы требуете с точки зрения обслуживания и надежности вашей сборки.
Я не уверен на 100%, что я понял вашу текущую структуру проекта, но если вы не можете ничего изменить, похоже, что есть серьезные проблемы с выставкой. С Maven:
- родительские модули вложенных модулей не содержат код
- один модуль создает только один основной артефакт (хотя не уверен, что это ваш проект)
Несоблюдение макета Maven по умолчанию является незначительной проблемой по сравнению с приведенным выше.
Без более подробной информации о том, что можно изменить (не нарушая структуру), я просто не думаю, что это выполнимо элегантным способом (если даже выполнимо).