8

我有一个依赖于其他几个 Maven 项目的 Maven 项目。我在我的项目中使用 Spring 3.1.1,依赖项目有 3.0.6。我试图在部署时排除 Spring 3.0.6,因为两者都不可能。为此,我在我的 POM 中添加了一个明确的排除项,但由于某种原因,WEB-INF/lib当我启动 Tomcat 服务器时,我仍然在文件夹中看到旧版本的 spring core jars。有人可以指出我哪里出错了。这是我的pom.xml

<project>
   ....
<properties>
    <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
</properties>
<dependency> 
        <groupId>com.test.abc</groupId> 
        <artifactId>abc</artifactId>
         <version>1.0</version>
         <type>war</type>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
             </exclusion>
        </exclusions>            
      </dependency> 
          <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
             </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>3.0.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-xml</artifactId>
        <version>1.0-m2</version>
    </dependency>
        ....    
       </project>
4

2 回答 2

4

您的依赖类型是战争,因此这里没有解决方案。Maven 将战争内容覆盖在您的项目上。

当战争发布到存储库时,工件将在 WEB-INF lib 文件夹中包含依赖库。在覆盖期间,除非您告诉它以不同的方式排除,否则它不会将 lib 文件夹与任何静态资源区别对待。在此处检查“覆盖”属性

于 2013-02-23T00:24:46.473 回答
1

就我而言,我认为我排除了正确的依赖。使用 eclipse,在依赖层次结构选项卡上,您可以右键单击它并单击排除工件,它排除了正确的依赖项(它们都有相同的 artifactId 但不同的 groupId)

于 2020-11-09T09:03:27.217 回答