【发布时间】:2017-01-16 15:10:37
【问题描述】:
我不明白为什么在以下最小项目中我在 Eclipse 和 IntelliJ 中运行测试时发现了 Spring 的 WebApplicationInitializer 接口的实现,但在使用 Maven (mvn clean test) 时却没有。
使用 Eclipse 和 IntellIJ,我看到了 INFO: Spring WebApplicationInitializers detected on classpath: [com.example.pack.DummyInitializer@26d678a4]
mvn clean test 我看到了INFO: No Spring WebApplicationInitializer types detected on classpath。
在测试中我启动了一个嵌入式 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
【问题讨论】:
-
您在 IntelliJ 中使用的是什么版本的 java。你使用 java 8 吗?我注意到在 pom 文件中你使用 java 8
-
@Periklis 是的,我使用 Java 8。您是否看到任何提示我不运行 Java 8?我对你的问题感到困惑。
-
对不起,我只是想确保您在 IntelliJ 中使用的 java 版本与您在 pom.xml 中定义的版本相同。任何时候,我都会下载你的应用程序,我会试一试
-
好的。据我所知,IntellIJ 会自动导入 Maven 设置(包括 Java 版本)。
-
设计决策与Spring Boot有关,我不使用。但是,引用的 Tomcat 问题很有见地。基于bz.apache.org/bugzilla/show_bug.cgi?id=52853#c19,您是否看到在 Maven 案例中让 Tomcat 正确查找/扫描/...的方法?
标签: spring maven tomcat8 servlet-3.0 spring-web