Это распространенное заблуждение о том, как работает Maven.
Ядро Maven определяет жизненный цикл сборки, по сути, конечный автомат, который сообщает ему, как перейти к данной фазе. Например, если вы запустите:
mvn test-compile
Maven знает, что сначала ему нужно выполнить ряд шагов (состояний), прежде чем он сможет выполнить test-compile
. Каждое из этих состояний может иметь или не иметь подключенный плагин, который Maven будет выполнять, учитывая, как написано POM. По сути, сам Maven не выполняет никакого копирования, компиляции, тестирования, упаковки ресурсов и т. Д. Все эти задачи передаются плагинам.
Когда вы импортируете проект Maven в Eclipse, он по разным причинам предоставит свое собственное отображение плагинов. Некоторые из них (например, компиляция) будут иметь смысл для среды IDE, для выполнения которой будут использоваться собственные плагины. Другие фазы, которые не являются частью того, что обычно делает Eclipse (например, упаковка), не будут отображаться и, следовательно, не будут иметь плагин для выполнения.
Выполнение тестов JUnit - это не то, что Eclipse обычно выполняет как часть сборки, поэтому вы запускаете тесты JUnit вручную ( тестовый класс правой кнопкой мыши * > Запуск от имени> тест JUnit). Eclipse просто игнорирует плагин surefire
, так как для запуска тестов использует свой собственный внутренний бегунок JUnit, и поэтому он не выбирает конфигурацию из плагина surefire
.
Я не сомневаюсь, что это можно сделать для работы в Eclipse, но на момент написания этого просто нет. Вы случайно не пробовали IntelliJ?
Однако, поскольку можно утверждать, что Eclipse всегда находится в режиме "DEV", будет ли подходящим обходным решением то, что вы статически устанавливаете системное свойство на JRE в Eclipse?
Вот так:
Окно> Настройки> Java> Установленные JRE> выберите свой JRE >
Правка ...> Аргументы виртуальной машины по умолчанию: -DDEV