Maven依赖性排除似乎不起作用

时间:2013-02-22 17:55:56

标签: maven

我有一个Maven项目取决于其他几个Maven项目。我在我的项目中使用Spring 3.1.1,依赖项目有3.0.6。我试图在部署时排除Spring 3.0.6,因为两者都不可能。我已经在我的POM中添加了明确的排除,但由于某种原因,当我启动Tomcat服务器时,我仍然在WEB-INF/lib文件夹中看到旧版本的spring core jar。有人能指出我出错的地方。这是我的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>

2 个答案:

答案 0 :(得分:4)

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

当战争发布到存储库时,工件将包含WEB-INF lib文件夹中的依赖库。在叠加期间,它不会将lib文件夹与任何静态资源区别开来,除非您告诉它以不同的方式排除。检查'overlay'属性here

答案 1 :(得分:0)

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