У меня есть следующая конфигурация по умолчанию для плагина Maven Failsafe:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20</version>
<executions>
<execution>
<id>default-integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>default-verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
В документации указано, что путь к классам по умолчанию включает в себя каталоги target/test-classes
и target/classes
вэтот порядок.Однако когда я запускаю mvn clean install
или mvn integration-test
, я не вижу папку classes
как часть пути к классам.Это вызывает сбои теста, поскольку я внедряю класс из моего источника в тест и получаю исключение NoClassDefFound
.
Вот подробный вывод:
[DEBUG] test (compact) classpath: test-classes package.jar javax.inject-1.jar cdi-api-1.2.jar...
Как видите, папка classes
должна быть добавлена до зависимости проекта, но это не так.
Однако, когда я запускаю mvn failsafe:integration-test
goal специально вместо фазы, тогда путь к классу включает classes
сразу после test-classes
, и тесты успешны, что соответствуетс документацией.
Что я не понимаю в процессе сборки?Почему путь к классу отличается при запуске фазы, а не цели?Как я могу получить classes
в classpath даже при запуске фазы?