Нет Spring WebApplicationInitializer при использовании tomcat7-maven-plugin и Initializer находится внутри зависимости от войны - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть 2 приложения Spring MVC, использующих Spring 4.3. Я назову их app1 и app2.

app1 работает нормально. Я запускаю его из Intellij, используя плагин tomcat7-maven (jetty: run goal), и все хорошо. Его WebApplicationInitializer найден и работает просто отлично.

Теперь в app2 я включаю app1 как военную зависимость.

<dependency>
  <groupId>com.mycompany</groupId>
  <artifactId>app1</artifactId>
  <type>war</type>
</dependency>

Когда я запускаю app2, также используя tomcat7-maven-plugin (jetty: run goal), я получаю следующее (очень известное) сообщение:

INFO: No Spring WebApplicationInitializer types detected on classpath

Я проверил мой целевой каталог и классы приложения app1, включая его WebApplicationInitializer, присутствующие как в разнесенном каталоге war, так и в самой сгенерированной войне. На самом деле, если я возьму войну и брошу ее в настоящий tomcat7, она загрузится просто отлично.

Я также попытался добавить

<context:component-scan base-package="com.mycompany.path_to_initializer"/>

к приложению app2. Без кубиков.

Есть идеи, почему это не работает с помощью плагина tomcat7?

1 Ответ

0 голосов
/ 03 мая 2018

Ну, я так и не нашел реального решения этой проблемы, но, к счастью, проблема ушла.

Теперь у меня есть 2 класса, оба с именем AppConfiguration и в одном пакете, которые расширяют WebMvcConfigurationSupport. Один живет в app1, другой в app2.

Версия app2 по сути является копией версии app1, заменяя 4-5 bean-компонентов для реализации, специфичной для app2. Когда я упаковываю приложение и создаю войну, версия app2 перезаписывает версию app1.

Теперь, когда у меня физически есть AppConfiguration, «живущая» внутри app2, tomcat не запускает никаких проблем; он «находит» класс WebApplicationInitializer (который существует только в app1) и загружает App2 в конфигурацию app2.

Я не знаю, почему у вас не может быть и WebApplicationInitializer и AppConfiguration в app1. Но так как это решение работает для меня, я не буду копать дальше.

Надеюсь, это когда-нибудь кому-нибудь поможет ...

...