3

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

  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目标期间将指定文件打包到战争文件中。但是当我在Eclipse中使用tomcat进行开发时,每次重新发布项目时,我都必须手动从tomcat工作空间中删除这两个jar。

  2. 从 pom 依赖项中删除它们,在 Eclipse 中添加一个 tomcat 6 服务器运行时库。在这种情况下,开发是可以的,但是由于 pom 文件中缺少两个依赖项,所以无法使用 maven 打包。

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

4

1 回答 1

6

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

例子:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>
于 2013-02-20T12:31:24.120 回答