我出现的问题是由于Hiberante中引用的包为<groupId>org.javassist</groupId>而strtus2中引用的包为<groupId>javassist</groupId>,由于引用不同,导致打包项目内含两个项目,此时布暑项目时会报错误.要去掉一个javassist包
1.使用maven中的pulgin功能
<plugin>
? ? ? ? <groupId>org.apache.maven.plugins</groupId>
? ? ? ??<artifactId>maven-war-plugin</artifactId>
? ? ? ? <version>2.0.2</version>
? ? ? ? <configuration>
? ? ? ? ? ? ? <warSourceExcludes>WEB-INF/lib/javassist-3.11.0.GA.jar</warSourceExcludes>
? ? ? ?</configuration>
</plugin>?
只方法是强制去掉包,如果maven用到profiles打包方式就会启动项目时报错
2.由于知道是那个包要去掉,所以我们直接让此jar包不参与打包
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.11.0.GA</version>
<scope>test</scope>
?
</dependency>
将<scope>test</scope>设置为test类型,简单粗暴,此时打包不会将包打入项目,启动不会报错
3.将包的groupId替换为一到的,我这里是将<groupId>org.javassist</groupId>替换为<groupId>javassist</groupId>
<dependency>
? ? ? ? ? ? <groupId>org.apache.struts</groupId>
? ? ? ? ? ? <artifactId>struts2-core</artifactId>
? ? ? ? ? ? <version>${struts2.version}</version>
? ? ? ? ? ? <exclusions>
? ? ? ? ? ? ? ? <exclusion>
? ? ? ? ? ? ? ? ? ? <groupId>javassist</groupId>
? ? ? ? ? ? ? ? ? ? <artifactId>javassist</artifactId>
? ? ? ? ? ? ? ? </exclusion>
? ? ? ? ? ? </exclusions>
?
? ? ? ? </dependency>
些方法查找原因会有些麻烦,我是借助于IDea 的Diagrams工具。查看包的引用。
?
?
?
?
?
Maven包引用出现重复包,去重复包3种方法(javassist)
原文:http://yjhkhnuje.iteye.com/blog/2283887