如何在Maven 2中指定“Tomcat 6 Server Runtime”库?

时间:2013-01-28 07:30:21

标签: eclipse maven-2 tomcat6

我正在使用Eclipse 3.7,Tomcat 6和Maven 2开发项目。该项目依赖于jsp-api.jar和serlet-api.jar。但是这两个罐子必须被排除在部署到Tomcat 6之外,因为它们与Tomcat 6的罐子冲突。所以我在开发阶段需要它们,在部署阶段不需要它们。我想以自动方式实现这一要求。 我有两个解决方案,但都不能满足我的要求:

  1. 在pom中添加依赖项,并在部署期间通过添加

    排除这两个jar
     <plugin>
       <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <packagingExcludes>WEB-INF/lib/servlet-api-2.4.jar,WEB-INF/lib/jsp-api-2.1.jar</packagingExcludes>
        </configuration>
     </plugin>
    

    maven-war-plugin可防止在mvn package目标期间将指定文件打包到war文件中。但是当我在开发中使用Eclipse中的tomcat时,每次重新发布项目时,我都必须手动从tomcat工作空间中删除这两个jar。

  2. 从pom依赖项中删除它们,在Eclipse中添加一个tomcat 6服务器运行时库。在这种情况下,开发很好,但不能与maven打包,因为pom文件中缺少两个依赖项。

  3. 如何在Maven中添加“Tomcat 6服务器运行时库”,这样这2个jar文件不会被复制到项目的lib目录中,编译器仍然可以找到依赖项?

1 个答案:

答案 0 :(得分:4)

只需将“提供”范围添加到依赖项中。

示例:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>