1. 设置仓库,我的Settings里设置使用了公司的Nexus

<?xml version="1.0"?>
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\mavenrepo</localRepository> <servers>
<server>
<id>snapshots</id>
<username>snapshots</username>
<password>xxx</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
</servers> <distributionManagement>
<repository>
<id>releases</id>
<name>xxx Nexus Releases</name>
<url>xxxx</url>
</repository>
<snapshotRepository>
<uniqueVersion>false</uniqueVersion>
<id>snapshots</id>
<name>xxx Nexus Snapshots</name>
<url>xxxxx</url>
</snapshotRepository>
</distributionManagement>
<profiles>
<profile>
<id>xxxNexus</id>
<repositories>
<repository>
<id>xxxNexus</id>
<url>xxx</url>
<releases>
<enabled>true</enabled>
<!-- always , daily (default), interval:X (where X is an integer in minutes) or never. -->
<updatePolicy>daily</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>xxxNexus</id>
<url>xxxx</url>
<releases>
<enabled>true</enabled>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles> <activeProfiles>
<activeProfile>xxxNexus</activeProfile>
</activeProfiles> </settings>

2.发现重复类,执行命令

mvn -U clean package -Plocal -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true

-Dmaven.test.skip=true: 如果命令包含了test phase,则忽略单元测试

enforcer:enforce: 查找重复类

-DcheckDeployRelease_skip: 不知道什么意思

执行命令后,输出如下

可以发现 jcl-over-slf4j 与 commons-logging 包有重复类冲突

3. 在pom里查找重复类冲突的包并排除重复类冲突

由于在我的pom里并没有显式写入common-logging的dependency,所以我们需要查找那个jar包依赖了commons-logging,执行如下命令

mvn -U dependency:tree -Dverbose

发现如下片段

在这个叫qsso-client的库里依赖了commons-logging包,所以我们在pom里将其排除

3. 排除重复类

            <dependency>
<groupId>com.xxx.security</groupId>
<artifactId>qsso-client</artifactId>
<version>${qsso-client.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

这样就将qsso-client的commons-logging包排除了,之后再运行enforcer:enforce则不会再报错


 

Maven重复类的解决的更多相关文章

  1. maven 重复依赖不同版本 选择规则

    maven 重复依赖不同版本 选择规则 本篇主要来看看 maven 对于 重复依赖的jar的不同版本时候 它内部的选择规则, 很多时候我们在搭建环境的时候 不注意就会存在依赖冲突等问题 那依赖冲突的时 ...

  2. java表单重复提交常用解决办法

    最近在看些基础的东西,顺便做下笔记.相信大家在平时网页使用中,经常会有按钮重复点击,然后点不动刷新,还有当网络延时比较厉害点了没反应在点击的重复提交.为了避免这种情况,总结了一下4点处理方案 表单重复 ...

  3. springboot打包成jar包后找不到xml,找不到主类的解决方法

    springboot打包成jar包后找不到xml,找不到主类的解决方法 请首先保证你的项目能正常运行(即不打包的时候运行无误),我们在打包时经常遇到如下问题: springboot打包成jar包后找不 ...

  4. 运行Java cmd程序 找不到或无法加载主类怎么解决

    //这个问题原因有以下几种,但是和环境变量并没有太大的关系 //能够执行java 和 javac 就证明你的环境变量已经配置好了,其实 classpath 可以不配置 //假如有如下文件:H:\cod ...

  5. atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc

    atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc 1.1. 修改此java文件,让他启动编译,还是不能生成了新的class, 1.2. 估计ide调试锁死class ,查看de ...

  6. cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题

    最近在解决XSS注入的问题,由于使用的servlet版本是2.5,不支持httpOnly的属性,故做了个工具类来实现cookie的httpOnly的功能.全类如下: /** * cookie工具类,解 ...

  7. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  8. maven提示错误的解决办法

    import或者new一个的maven project的时候,提示如下错误 Description    Resource    Path    Location    TypeCannot read ...

  9. java查找重复类/jar包/普通文件

    开发web应用时,有时更新了类却没有生效,其实是因为jboss/tomcat中其他发布包下有同名类(包括全路径都相同). 于是萌发了做个程序来检查指定目录是否存在重复类(通过asm从类文件中取类的全路 ...

随机推荐

  1. 字符数组,字符指针,字符串常量,以及sizeof的一些总结

    1.以字符串形式出现的,编译器都会为该字符串自动添加一个\0作为结尾 如在代码中写"abc",编译器帮你存储的是"abc\0". 2.数组的类型是由该数组所存放 ...

  2. WCF JSON DATETIME JSON.NET (Newtonsoft.Json.dll)

    [DataMember] public DateTime? myTime { get; set; } var timeFormat = new JsonSerializerSettings() { D ...

  3. 初学RabbitMQ

    一.RabbitMQ中的一些概念 (1)Connection(连接) 与RabbitMQ建立连接,由ConnectionFactory创建每个Connection至于一个物理server进行连接,此链 ...

  4. css3++js钟表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Velocity $ 和$! 区别

    输出指令 ${}过滤输出 输出表达式的计算结果,并进行过滤,比如:过滤变量中的HTML标签. 格式: ${expression} 示例: ${user.name} 注:HTTL缺省开启了EscapeX ...

  6. html5 xdm 页面之间的通信

    <!-- 这个是父页面xdm.html --><!DOCTYPE html> <html> <head> <meta charset=" ...

  7. delphi 常用的将窗口置前的函数

    function BringWindowToTopEx(hWnd: HWND): Boolean;begin if IsIconic(hWnd) then ShowWindow(hWnd, SW_RE ...

  8. [IIS]IIS扫盲(七)

    (4)汉化补丁 许多软件都是英文版本的,国人的英语水平普遍不高,包括笔者.因为这个,影响了不少人学习电脑的兴趣. 为了占领市场,软件开发商提供了中文版本:为了大家学习方便,爱好汉化工作的国人制作了汉化 ...

  9. rpm包形式安装MySQL

    1.下载Mysql安装所需的rpm包 http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.21-1.linux_glibc2.5.x86 ...

  10. 含大量行的订单创建时候creditlimit校验最耗时间

    含大量行的订单创建时候creditlimit校验最耗时间