【Maven】Maven的SNAPSHORT版本与依赖更新

1、问题描述

今天在用Intellij Idea写代码的时候,遇到一个问题,大概形容一下:
分别有两个Java工程,TestA、TestB均使用maven构建,TestB依赖TestA,即在TestB的pom文件中,写出了对TestA的依赖,如下:


<dependency>
  <groupId>whu.lcgroupId>
  <artifactId>lcartifactId>
  <version>1.0-SNAPSHOTversion>
dependency>

在TestA的项目中,依赖了Gson的包,并在代码中使用了Gson,在TestB中调用也一切没有问题。而当在TestA中引入了对jsonlib的依赖,并且修改了TestA代码使用JSONObjetc类之后,重新install TestA,再次构建TestB并运行,报错如下:

【Maven】Maven的SNAPSHORT版本与依赖更新_第1张图片
即,在TestB中并没有找到对jsonlib的依赖,可是依赖明明写在了TestA的pom中,并且Gson的依赖都可以找到,那么为什么对jsonlib的依赖会找不到相应的类呢。

2、解决办法

其实解决办法很简单,maven reimport一下就好了。道理也很简单:
(1)一般在项目发布之前,代码改动会很多,我们依赖的很多其他库的改动也会很多,因此一般在开发过程中,maven在构建时,都会构建SNAPSHORT快照版本,即verison值以“SNAPSHPORT”结尾,这有什么好处呢?这使得,java在构建代码时,都会首先(可以配置)去远程仓库查看依赖是否更新,如果更新则直接下载远程仓库的代码并且使用。这也就是为什么,我们重新 install TestA之后,对TestB没有做任何mvn操作,而只是用IDE重新构建,就可以引用到TestA的最新代码。
(2)但是,由于没有进行任何mvn操作,所以TestA重新加入的依赖,TestB无法引用到。因此重新reimport加载依赖一下就好。

你可能感兴趣的:(Maven学习笔记)