我目前正在将构建过程从Eclipse / Ant迁移到Maven / M2Eclipse / Artifactory。 我在Eclipse中有一个Webapp作为WTP项目。 我用m2eclipse将它迁移到了Maven。
编译从Eclipse IDE运行良好。
但是,当我尝试从Maven CLI(mvn clean & mvn compile
)编译时,Maven抱怨没有找到Tomcat环境提供的库(如 annotations-api , servlet -api 等,...)。
足够公平:确实,这些依赖关系由WTP提供,如Java resources / Libraries / ApacheTomcat6
。 Maven不知道他们。
我可以在构建路径中停用它,并在我的POM中添加每个相应的依赖项,但我担心这会导致Maven再次在我的webapp(WEB-INF/libs
)中部署它们。
那么,对maven说“这个应用程序将在一个众所周知的环境中运行,提供以下库”的好方法是什么?我可以添加一些常见的Tomcat POM作为依赖吗?
提前感谢您的建议。 的问候,
圣拉斐尔
答案 0 :(得分:11)
处理此问题的一种方法是使用范围provided
声明这些依赖项。这些依赖项可用于编译和测试,但不会由maven打包到webapp中。例如,
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>