【问题标题】:No Spring WebApplicationInitializer when using tomcat7-maven-plugin and Initializer is inside war dependency使用 tomcat7-maven-plugin 时没有 Spring WebApplicationInitializer 并且 Initializer 在战争依赖中
【发布时间】:2018-10-08 05:40:32
【问题描述】:

我有 2 个使用 Spring 4.3 的 Spring MVC 应用程序。我将它们称为 app1 和 app2。

app1 工作正常。我使用 tomcat7-maven-plugin(jetty:run 目标)从 Intellij 中运行它,一切都很好。它的 WebApplicationInitializer 被发现并且运行良好。

现在在 app2 中,我将 app1 作为战争依赖项包含在内。

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

当我使用 tomcat7-maven-plugin (jetty:run goal) 运行 app2 时,我收到以下(众所周知的)消息:

INFO: No Spring WebApplicationInitializer types detected on classpath

我已经检查了我的目标目录和 app1 的类,包括它的 WebApplicationInitializer 都存在于展开的战争目录和生成的战争本身中。事实上,如果我把战争放到一个真正的 tomcat7 中,它就可以加载了。

我也试过添加

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

到 app2 的 applicationContext。没有骰子。

知道为什么这不能使用 tomcat7 插件吗?

【问题讨论】:

    标签: maven spring-mvc war tomcat7-maven-plugin


    【解决方案1】:

    好吧,我从来没有找到真正解决这个问题的方法,但幸运的是问题消失了。

    我现在有 2 个类,它们都名为 AppConfiguration,并且在同一个包中,它们扩展了 WebMvcConfigurationSupport。一个住在 app1,另一个住在 app2。

    app2 版本本质上是 app1 版本的副本,用 4-5 个 bean 代替 app2 特定的实现。当我打包应用并创建war时,app2版本会覆盖app1版本。

    现在我在 app2 中物理地“活”了一个 AppConfiguration,tomcat 启动没有问题;它“找到”WebApplicationInitializer 类(仅存在于 app1 中),并加载 app2 AppConfiguration。

    我不知道为什么你不能在 app1 中同时拥有 WebApplicationInitializer AppConfiguration。但由于这个解决方案对我有用,所以我不会进一步挖掘。

    我希望有一天这对那里的人有所帮助......

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2017-01-31
      • 2017-05-23
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多