Я использую Spring @Configurable для автоматического подключения bean-компонента, созданного с помощью «new» в приложении Dropwizard. У меня есть интеграционный тест, который использует DropwizardAppRule для запуска приложения, и я использую аспект j-maven-plugin для плетения времени компиляции.
Когда я делаю сборку и запускаю интеграционный тест из IDEA, bean-компонент подключается, как и ожидалось, и тест проходит.
Когда я запускаю «mvn clean install», компонент НЕ подключается, и тест завершается с ошибкой NullPointerException.
Когда я запускаю «mvn clean install -DskipTests» и запускаю приложение, bean-компонент подключается правильно.
Мой вопрос: почему он не работает во время «чистой установки mvn»?
Aspectj-maven-plugin работает на этапе источников процессов, поэтому классы должны быть инструментированы до запуска интеграционных тестов:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
Если я декомпилирую класс, я увижу, что он действительно инструментирован.
Если я поставлю точку останова в установщике @Autowired и запущу интеграционный тест из IDEA, я увижу, что класс подключается Spring.
Он вообще не ломается в установщике при запуске «mvn clean install».
Замена @Autowired на @Resource не помогает.
У меня есть класс конфигурации Spring с @EnableSpringConfigured. Мое лучшее предположение заключается в том, что DropwizardAppRule не использует правильную конфигурацию Spring, хотя другие компоненты Spring управляются правильно.
Любая помощь приветствуется. Спасибо.
изменить
Я также тестировал как уверенный огонь по умолчанию (maven 3.2.5), так и с помощью:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>