我有一个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>
答案 0 :(得分:4)
你的依赖类型是战争所以这里没有解决方案。 Maven将战争内容覆盖在您的项目上。
当战争发布到存储库时,工件将包含WEB-INF lib文件夹中的依赖库。在叠加期间,它不会将lib文件夹与任何静态资源区别开来,除非您告诉它以不同的方式排除。检查'overlay'属性here
答案 1 :(得分:0)
就我而言,我认为我排除了正确的依赖性。使用eclipse,可以在依赖项层次结构选项卡上单击鼠标右键,然后单击“排除工件”,然后它排除了正确的依赖项(它们都具有相同的artifactId,但具有不同的groupId)