首页 > 其他分享 >maven的mvn dependency依赖分析和常用命令介绍

maven的mvn dependency依赖分析和常用命令介绍

时间:2022-10-25 12:38:41浏览次数:87  
标签:INFO compile spring jar springframework maven dependency 常用命令 org

​​​maven的mvn dependency依赖分析和常用命令介绍

在项目开发过程中,我们经常会有分析项目依赖的需要,查找jar依赖路径,查找jar冲突等等。这时候,dependency命令会非常的有用,在此我们介绍下关于maven的dependency命令的一些用法。

1. ​​mvn dependency:list​​ ---- 列出项目的所有jar包

​mvn dependency:list -Dverbose​​该命令可以列出项目依赖的所有jar包,-Dverbose参数会把被忽略的jar,即相同jar包的不同版本引入也列出来。
输出示例:


[INFO]    org.springframework:spring-aop:jar:5.0.6.RELEASE:compile
[INFO] org.hibernate.validator:hibernate-validator:jar:6.0.9.Final:compile
[INFO] com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile
[INFO] com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
[INFO] org.springframework:spring-expression:jar:5.0.6.RELEASE:compile
[INFO] org.springframework.boot:spring-boot-starter:jar:2.0.2.RELEASE:compile
[INFO] org.springframework.boot:spring-boot-starter-logging:jar:2.0.2.RELEASE:compile
[INFO] org.yaml:snakeyaml:jar:1.19:runtime
[INFO] org.springframework.boot:spring-boot:jar:2.0.2.RELEASE:compile
[INFO] junit:junit:jar:3.8.1:test

2. ​​mvn dependency:tree​​ ---- 列出项目的包依赖树

​mvn dependency:tree -Dverbose​​这个命令跟上一个命令的区别就是,这个命令的依赖,输出来是个树,更方便看依赖关系。
输出示例:


[INFO] \- org.springframework.boot:spring-boot-starter-web:jar:2.0.2.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter:jar:2.0.2.RELEASE:compile
[INFO] | \- org.springframework:spring-core:jar:5.0.6.RELEASE:compile
[INFO] | \- org.springframework:spring-jcl:jar:5.0.6.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:5.0.6.RELEASE:compile
[INFO] | \- org.springframework:spring-beans:jar:5.0.6.RELEASE:compile
[INFO] \- org.springframework:spring-webmvc:jar:5.0.6.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:5.0.6.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:5.0.6.RELEASE:compile
[INFO] \- org.springframework:spring-expression:jar:5.0.6.RELEASE:compile

​dependency:tree​​有几个比较重要的参数,非常有用:

  • includes
  • 说明:该参数可以列出指定要求的jar,其他的忽略
  • 示例:​​-Dincludes=velocity:velocity​​,只列出velocity的依赖关系
  • 参数值:​​[groupId]:[artifactId]:[type]:[version]​​,参数格式就是这样的,没有的值可以留空,举例​​-Dincludes=:spring-aop​​,​​-Dincludes=:::5.0.6.RELEASE​​,​​-Dincludes=org.springframework​
  • 通配符:在参数中可以使用通配符,例如​​org.apache.*​​,​​:::*-SNAPSHOT​
  • 多个参数值:参数后面可以跟多个参数值,以英文逗号分隔,举例​​-Dincludes=org.apache.maven*,org.codehaus.plexus​
  • excludes
  • 说明:该参数的用法跟​​includes​​是一样的,不过这个参数的作用是排除指定的jar

示例:查看包冲突

比如我们查看一下​​commons-collections​​包的冲突
命令:
​mvn dependency:tree -Dverbose -Dincludes=commons-collections​​输出:


[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] | \- commons-digester:commons-digester:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO] \- commons-collections:commons-collections:jar:2.0:compile

我们可以看到,2.1版本的jar被忽略掉了,因为maven是根据路径最近原则来解析依赖,2.0版本路径更短,所以2.0版本被引入,2.1版本路径比2.0要长,所以被忽略。
使用这个命令可以轻松的查看包的引入路径,包的冲突情况。
此处一定不要省略​​-Dverbose​​参数,要不然是不会显示被忽略的包

3. ​​dependency:analyze-only​​ ---- 分析依赖

​dependency:analyze-only​​命令可以分析整个项目,并且找出项目中依赖有如下情况的:

  • 声明了并且使用了的依赖
  • 没有声明但是使用了的依赖
  • 声明了但是没有使用的依赖

输出示例:


[INFO] Used declared dependencies found:
[INFO] cn.hutool:hutool-all:jar:4.3.1:compile
[INFO] com.google.guava:guava:jar:27.0.1-jre:compile
[WARNING] Used undeclared dependencies found:
[WARNING] org.slf4j:slf4j-api:jar:1.7.25:compile
[WARNING] org.springframework:spring-context:jar:4.3.22.RELEASE:compile
[WARNING] org.springframework.boot:spring-boot-autoconfigure:jar:1.5.19.RELEASE:compile
[WARNING] org.springframework.boot:spring-boot:jar:1.5.19.RELEASE:compile
[WARNING] org.springframework:spring-beans:jar:4.3.22.RELEASE:compile
[WARNING] junit:junit:jar:4.12:test
[WARNING] Unused declared dependencies found:
[WARNING] org.springframework.boot:spring-boot-starter-test:jar:1.5.19.RELEASE:test
[WARNING] com.h2database:h2:jar:1.4.197:test
[WARNING] org.springframework.boot:spring-boot-starter:jar:1.5.19.RELEASE:compile
[WARNING] com.fasterxml.jackson.core:jackson-databind:jar:2.8.11.3:compile
[WARNING] org.projectlombok:lombok:jar:1.16.22:compile
[WARNING] com.alibaba:fastjson:jar:1.2.55:compile

需要注意的是,如果你要查看声明了并且使用了的依赖,必须加上参数​​-Dverbose​​。

4. ​​dependency:analyze-duplicate​​ ---- 分析<dependencies/> and <dependencyManagement/>

这个命令会查找​​<dependencies/> 和 <dependencyManagement/>​​中重复声明的依赖

5. ​​dependency:list-repositories​​ ---- 列出所有的远程repositories

命令:
​mvn dependency:list-repositories​

输出:


[INFO]        id: sonatype-nexus-snapshots
url: https://oss.sonatype.org/content/repositories/snapshots
layout: default
snapshots: [enabled => true, update => daily]
releases: [enabled => false, update => daily]

[INFO] id: apache.snapshots
url: https://repository.apache.org/snapshots
layout: default
snapshots: [enabled => true, update => daily]
releases: [enabled => false, update => daily]

[INFO] id: central
url: https://repo.maven.apache.org/maven2
layout: default
snapshots: [enabled => false, update => daily]
releases: [enabled => true, update => daily]

6. ​​dependency:purge-local-repository​​ ---- 清理本地repository

这个命令的会首先解析整个项目的依赖,然后从本地repository中清理这些依赖,重新从远程repository下载。

  • 直接依赖
    有一点要说清楚,这个命令默认的对所有的依赖项进行操作。所以它会在清除操作之前,下载某些缺失的依赖来收集完整的依赖树信息。为了避免这些预下载的操作,你可以设置参数​​-DactTransitively=false​​,仅对项目的直接依赖进行操作。
  • 指定/排除依赖
    你也可以有针对性的只操作某些包,需要添加参数​​-Dincludes​​,明确的声明包,这个是可以传多个值的,用英文逗号分隔,举例:​​dependency:purge-local-repository -Dincludes=org.slf4j:slf4j-api,org.slf4j:log4j-over-slf4j​​。​​-Dexcludes​​也是一样的道理,只不过是排除某些依赖。
  • 自定义清理
    如果你想清理不在本项目中的依赖,也可以使用这个,不过参数是不一样的。​​mvn dependency:purge-local-repository -DmanualIncludes=org.apache:apache​​,参数​​-DmanualInclude​​可以让你清理不在本项目中的依赖,但是不会重新解析依赖了,因为本项目不需要这些依赖。这个对清理parent pom,导入的pom,maven插件非常有用。

标签:INFO,compile,spring,jar,springframework,maven,dependency,常用命令,org
From: https://blog.51cto.com/fiftyone/5794471

相关文章

  • g++ 常用命令
    gcc/g++参数详解(转载)[介绍]gccandg++分别是gnu的c&c++编译器gcc/g++在执行编译工作的时候,总共需要4步预处理,生成.i的文件[预处理器cpp]将预处理后的文件不转换......
  • maven的下载、安装、配置,idea中配置Maven
    下载下载链接:点击下载地址;找到:对应版本的包下载安装下载后的压缩包解压出来,然后将解压后的包放到日常安装软件的位置即安装成功,当然取决于个人意愿,也可以不移动......
  • IDEA每次打开新项目Maven配置都会重置
    IDEA每次打开新项目Maven配置都会重置你有咩有遇到过每次导入项目的时候,就会有些设置会莫名其妙的重置,这是因为没有配置打开新项目加载的配置。首先打开IDEA,然后File,选......
  • Android编译报错:Cannot resolve external dependency com.android.tools.build:gradle
    修改根目录的build.gradle增加 repositories配置,然后再File>SyncProjectwithGradleFiles,再执行Build>RebuildProjectbuildscript{ext{agp_versi......
  • docker 常用命令
    1.查看docker版本dockerversion2.运行helloworlddockerrunhello-world 3.查看docker服务运行状态systemctlstatusdocker#查看状态systemctlstart......
  • git常用命令
    1、初始化仓库1.1、Git全局设置gitconfig--globaluser.name"wanghx"gitconfig--globaluser.email"[email protected]"1.2、创建git仓库mkdirTjHisNet6Apic......
  • Linux 常用命令汇集
      查找目录文件  一般常用ll即可      注意在linux中用IPaddr 查看自己的网络ip   pwd显示目前所在路径   touch创建文件   ......
  • IDEA 对项目Maven进行install项目时报错(Failed to execute goal org.apache.maven.plu
    【问题】IDEA对项目Maven进行install项目时报错 错误如下:Failedtoexecutegoalorg.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test(default-test)o......
  • Git常用命令总结
    1、(先进入项目文件夹)通过命令gitinit把这个目录变成git可以管理的仓库gitinit2、把文件添加到版本库中,使用命令gitadd.添加到暂存区里面去,不要忘记后面的小数点“.”......
  • maven生命周期及命令用法
    生命周期一个项目的构建build的过程通常包括:清理、编译、测试、打包、部署等Maven定义了三套生命周期:clean:处理项目的清理工作,主要命令是cleandefault:处理项......