Тестирование Java-проекта со многими модулями - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть проект Maven Java со многими модулями и одним метамодулем.И я хочу запустить тест.Я использую команду mvn test в консоли.Но мой тест не проходит при компиляции, потому что классы в других модулях не найдены.Но в IDE Eclipse нет ошибок.Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Попробуйте запустить mvn install.Это компилирует, упаковывает и запускает тесты.Тогда, когда все скомпилировано, вы, вероятно, можете запустить только mvn test.Но вы не должны (IMHO), потому что только когда вы запускаете полный процесс, вы уверены, что самые новые версии ваших классов тестируются.Не беспокойтесь об эффективности: maven не компилирует классы, если они уже скомпилированы.Только mvn clean install восстановит все с нуля.

1 голос
/ 21 февраля 2012

В ваших моделях не должно быть циклов зависимости!

Попробуйте запустить mvn test из папки, в которой находится родительский пом.


(подробнее)

Если у вас нет родительского pom с субмодулями.Затем вы должны сначала запустить mvn install для всех остальных ваших модулей, от которых зависит модуль, который вы хотите протестировать.

(Eclipse не нуждается в этом, потому что он может напрямую разрешать зависимости для других открытых проектов)

Но если все модули принадлежат одному циклу выпуска (все модули будут выпущены вместе с одной и той же версией), то может быть лучше использовать родительские и дочерние модули / pom - потому что тогда вы можетеrun mvn test или mvn install для родительского pom, и maven сделает это для всех детей в правильном порядке.- После того, как вы установили все остальные модули, вы можете запускать mvn test на одном модуле, пока не обновите другой модуль.- Тогда вам нужно будет также установить этот обновленный модуль или лучше запустить установку для родителя.

1 голос
/ 21 февраля 2012

если у вас есть четко определенные зависимости, используйте mvn install вместо mvn test. Запуск тестов также входит в фазу установки, и вы получите модули, необходимые для компиляции, в локальный репозиторий maven.

...