使用tomcat7-maven-plugin和Initializer时,没有Spring WebApplicationInitializer在war依赖内

时间:2018-04-27 11:22:02

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

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

app1工作正常。我使用tomcat7-maven-plugin(jetty:run goal)从Intellij内部运行它,一切都很顺利。找到它的WebApplicationInitializer并运行得很好。

现在在app2中我将app1包含为战争依赖。

Variant

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

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

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

我也尝试添加

INFO: No Spring WebApplicationInitializer types detected on classpath

到app2的applicationContext。没有骰子。

任何想法为什么这不能使用tomcat7插件?

1 个答案:

答案 0 :(得分:0)

好吧,我从未找到解决此问题的真正的解决方案,但幸运的是问题消失了。

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

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

现在我在app2里面有一个“生活”的AppConfiguration,tomcat开始没有问题;它“找到”WebApplicationInitializer类(仅存在于app1中),并加载app2 AppConfiguration。

我不知道为什么你不能在app1中同时拥有WebApplicationInitializer AppConfiguration。但由于这个解决方案对我有用,我不打算再挖掘。

我希望有一天能帮助那些人......