Я не понимаю, почему в следующем минимальном проекте моя реализация интерфейса Spring WebApplicationInitializer
обнаруживается при выполнении тестов в Eclipse и IntelliJ, но не при использовании Maven (mvn clean test
).
С Eclipse и IntelIJ я вижу INFO: Spring WebApplicationInitializers detected on classpath: [com.example.pack.DummyInitializer@26d678a4]
С mvn clean test
я вижу INFO: No Spring WebApplicationInitializer types detected on classpath
.
В тесте я запускаю Embedded Tomcat:
String pathToWebXML = new File("src/main/webapp/").getAbsolutePath();
tomcat = new Tomcat();
tomcat.setBaseDir("embedded_tomcat");
tomcat.setPort(0);
tomcat.addWebapp("", pathToWebXML);
tomcat.start();
web.xml
ссылается на реализацию ServletContextListener
, которая создает новую (и пустую) AnnotationConfigWebApplicationContext
.
Я загрузил пример проекта на GitHub: https://github.com/C-Otto/webapplicationinitializer
useSystemClassLoader
наfalse
в конфигурации Surefire решает эту конкретную проблему. Однако я не до конца понимаю последствия и был бы признателен за объяснение рассматриваемой проблемы. См. также maven.apache.org/surefire/maven- surefire-плагин/примеры/ - person C-Otto   schedule 12.05.2016useManfestOnlyJar
. Тем не менее, это то, что я не понимаю. Я дам вознаграждение любому, кто объяснит это, см. bugs.eclipse.org /bugs/show_bug.cgi?id=447790 :) - person C-Otto   schedule 12.05.2016