我正在使用 Eclipse 和插件 m2eclipse 来构建和管理我的项目。在 POM 中,我包含了 servlet-api 的条目:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
提供范围,不包括 .jar 文件到 .war 包,(它已经由 tomcat servlet 容器提供)。通过mvn install编译是正确的,文件不包含在WEB-INF\lib中,部署到 tomcat 工作正常,程序工作正常,没关系。
但是,这个案例是在 Eclipse 内部开始的。从 Eclipse 启动我的 Web 应用程序后,出现错误:
\WEB-INF\lib\servlet-api-2.5.jar) - jar 未加载。请参阅 Servlet 规范 2.3,第 9.7.2 节。违规类:javax/servlet/Servlet.class
我不知道为什么,因为Maven 依赖项(包括 javac-servlet-2.5.jar)作为Java EE Module Dependencies包含在内,并且应该放在WEB-INF\lib 文件夹中,同时从 eclipse 开始。另一方面,在 eclipse 中,我提供了 apache tomcat 目录的路径,在项目内部,自动引用了Apache Tomcat v6.0中的库,包括servlet-api.jar。
所以基本上,在从 POM 中删除对 servlet-api-2.5.jar 的引用后,该库从Maven Dependencies中消失,从 Eclipse 启动我的 Web 应用程序时我也没有例外。一切都很好……在 eclipse 中。
当然,没有进入 POM,这次mvn install 失败,同样的异常,我之前提供过。
有什么方法可以让它在不删除和插入引用的情况下工作,这取决于我想要做什么:使用 maven 编译或使用 Eclipse 运行?
问候