2012-02-21 4 views
0

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

+0

Являются ли вспомогательные модули «большого модуля» родительского модуля? – Ralph

+0

«много модулей» и один «метамодуль», где находятся общие классы. –

+0

У «много модулей» есть РОДИТЕЛЬ? см. http://www.dev-articles.com/article/Maven-parent-pom-450001 для примера, что означает родительский пом? – Ralph

ответ

1

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

1

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

1

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

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


(подробнее)

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

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

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

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