Подойдет ли 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:

  1. родительские модули вложенных модулей не содержат код
  2. один модуль создает только один основной артефакт (хотя не уверен, что это ваш проект)

Несоблюдение макета Maven по умолчанию является незначительной проблемой по сравнению с приведенным выше.

Без более подробной информации о том, что можно изменить (не нарушая структуру), я просто не думаю, что это выполнимо элегантным способом (если даже выполнимо).

Другие вопросы по тегам