Maven:如何保持依赖性?

时间:2012-03-27 20:56:39

标签: java spring maven jstl

我是Maven的新手。我最近学到了它来解决我在Java和Spring WebApp上遇到的一些依赖问题。我一直在尝试使用一个小样本webapp。 webapp使用JSTL标记。我发现有必要将这些标签放在pom.xml中:

   <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2-rev-1</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jstl-impl</artifactId>
        <version>1.2</version>
    </dependency>

这些可以获得我需要的2个罐子:

jstl-api-1.2-rev-1.jar
jstl-impl-1.2.jar

但它在我的WEB-INF / lib中也包含了这个jar,当我尝试在Tomcat 7中运行它时,包含它会导致各种错误:

jsp-api-2.1.jar

有没有办法可以重写我的依赖标记,将jsp-api-2.1.jar从我的WEB-INF / lib中删除?

由于


固定。多谢你们。 FWIW,这就是我如何更改JSTL的依赖关系标签,而不是将JSP-API jar放在我的WEB-INF库中:

   <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2-rev-1</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jstl-impl</artifactId>
        <version>1.2</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

我能够在这个站点找到groupID和artifactID https://repository.sonatype.org/index.html#welcome

2 个答案:

答案 0 :(得分:4)

有排除部分,类似于下面的部分。

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.6.ga</version>
  <exclusions>
    <exclusion>
      <groupId>javax.transaction</groupId>
      <artifactId>jta</artifactId>
    </exclusion>
  </exclusions>
</dependency>

在您的情况下,您添加的一个(或两个)依赖项包括您不需要的依赖项。找到哪一个,并添加排除部分。

答案 1 :(得分:1)

将范围更改为“已提供”。 EG:

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jstl-impl</artifactId>
    <version>1.2</version>
    <scope>provided</scope>
</dependency>

提供的范围确保jar可供编译器使用,但假定在运行代码时将在运行时“提供”jar。在你的演员阵容中,它由Tomcat提供。