2016-01-01 5 views
0

У меня есть проект Maven с несколькими подмодулями. Один из этих подмодулей, скажем, подмодуль X зависит от всех других подмодулей, так как это Maven Plugin, который объединяет все остальное.Интеграционное тестирование подмодуля Maven Plugin

Теперь я хочу использовать этот плагин Maven во время этапа verify в моей родительской POM, чтобы выполнить реальный запуск его по всему проекту (вид еды собственного досуга).

Unfortunatelly Я получаю сообщение об ошибке:

The projects in the reactor contain a cyclic reference

Так как я могу сделать тест интеграции таких Тестовые для субмодуля Maven плагин?

+0

Просто не имеет смысла. Вы проверяете части своих сборщиков плагином, который построен вашей текущей версией? Обычно вам нужно отделить сборку плагина и своего рода фреймворк или что-то еще, что используется плагином ... Кроме того, вопрос в том, что вам действительно нравится тестировать. Плагин или что-то другое? – khmarbaise

+0

@khmarbaise Да, я хочу использовать Maven Plugin. Я только что основал весь проект. Допустим, у вас есть плагин Enforcer, который обеспечивает, например, Java 8 как минимум, а затем вы хотите использовать этот плагин для всего агрегатора для проецирования на каком-то последнем этапе, чтобы провести тест на собачий грипп. Все банки должны быть уже построены, поэтому я не вижу противоречия в моем вопросе. –

+0

@khmarbaise На самом деле я хотел бы сделать вид Maven Invoker run, но на весь реальный проект, а не на манекене. –

ответ

1

Я бы рассмотрел агрегацию и наследование: они действительно являются two different концепциями в Maven, часто используемыми в комбинации, но которые, однако, могут использоваться и в полном отделенном виде.

В этом случае ваш подмодуль плагина определенно определен как модуль в агрегаторе pom (то есть он является подмодулем). Но я также предполагаю, что подмодуль плагина также имеет как родительский pom агрегатор pom (т. Е. Агрегатор pom также является родительским pom, что является нормальным подходом, но не всегда требуется).

Требуется ли последнее? Вы можете продолжать использовать мультимодульный/агрегаторный подход, не обязательно имея агрегатор в качестве родительского элемента подмодуля плагина. Таким образом, subModule плагина все равно будет модулем агрегатора pom, но он не будет иметь в качестве родителя агрегатор pom, отсоединив его от него и, таким образом, нарушит циклические зависимости.

Возможный недостаток: в агрегаторе pom вы также определяли общие вещи (управление зависимостями, свойства), необходимые также в подмодуле плагина. В этом случае вам необходимо будет дублировать/просматривать эти общие настройки только для соответствующего подмодуля.

+0

Да, у меня есть огромные профили и общие вещи в моем агрегаторе POM, дублирование, к сожалению, не вариант для меня. –

+0

Вы можете использовать другую версию своего плагина над своим собственным проектом? Пример: вы нарушаете циклическую зависимость, поскольку вы упомянули, что знаете, как вы ее ввели; затем вы выпускаете версию; вы снова вводите использование плагина в том же проекте, но для его предыдущей версии. Циклической зависимости больше не должно быть. –

+0

@ADiMatteo да, это то, что я сейчас делаю. Но тогда мне нужно подождать до следующего выпуска, чтобы узнать о недавно введенных ошибках. Все дело здесь в том, чтобы узнать об ошибках/изменениях в поведении перед выпуском :) –

0

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

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