Maven依赖的是本地工程还是仓库jar包?
2013-12-19 19:02
316 查看
转摘自:http://www.cnblogs.com/jinguangguo/p/maven.html
相信大家都碰见过maven配置的依赖或者是jar包或者是工程,在开发的过程当中,我们当然需要引入的是工程,这样查看maven依赖的文件的时候,就能直接查看到源码。
一、本地工程依赖
举个例子,其架构如下所示(以下均使用eclipse中m2eclipse插件进行演示)——此时,这里依赖的“dependency-to-hello”指代的是eclipse工作空间中的工程,这样,我们直接源码依赖的便是工作空间里的源码,这样很方便,也是我们需要的。会注意到,所依赖的“dependency-to-hello”工程,并没有显示其路径,也就是默认的工作空间的地址。
那么,什么时候maven依赖的是仓库(本地仓库或远程仓库)中的jar包呢?
二、(本地/远程)仓库jar包依赖
很简单的方法之一,直接把“dependency-to-hello”工程关闭掉(close project),这样,就得到这样一个视图——
会看到,此时maven依赖的正是对应“dependency-to-hello”工程的jar文件,并且,后面的路径显示是从maven仓库里面取的。
三、工程依赖及仓库依赖的转换
OK,我们现在还原之,我们将工程“dependency-to-hello”打开,会看到对应的maven依赖又变回原来的工程依赖了。
需要说的是,当重新打开工程“dependency-to-hello”的时候,hello工程并没有出现红色感叹号,也就是无须做“update dependencies”等的更新maven依赖等操作。
从这里,我们就能够看出来——m2eclipse首先查看是否能够从本地工程库中得到对应的maven依赖,如何存在,则将本地工程依赖进来;如何不存在,则从本地仓库/远程仓库中加载解析对应的jar包依赖。
四、版本号变更
在这儿,我假装模拟一下版本号变更,来看一下,会发生什么情况?
现在“dependency-to-hello”工程是“快照”版本,当我们将之换为正式版本的时候,发现“hello”工程的maven依赖重新变回了jar依赖,如下——
“dependency-to-hello”工程的maven坐标配置——
<groupId>com.juvenxu.mvnbook</groupId> <artifactId>dependency-to-hello</artifactId> <version>0.0.1</version> <packaging>jar</packaging>
“hello”工程的依赖配置——
<dependency> <groupId>com.juvenxu.mvnbook</groupId> <artifactId>dependency-to-hello</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
其文件架构会显示如下——
会发现其依赖是原有的仓库中的“快照”版本的“dependency-to-hello”的jar包。我们将仓库中的“快照”版本删除掉。刷新工程,发现hello工程上显示红色感叹号。如下——
也就是说,其依赖是空依赖,本地及仓库中均不存在。
当然这个“陷阱”是我自己加的,重新更改其版本号正确对应即可,就可以重新得到maven本地工程依赖了。
五、总结
在日常多人协作开发过程中,我们常常会遇到maven依赖版本变更带来的问题。当我们的工作空间也存在对应的依赖工程(对应上述例子中的“dependency-to-hello”工程)的时候,我们可以通过判断依赖的是本地工程还是仓库jar包的方式来判断是否出现了版本不一致的问题。从而,就能够解决maven依赖版本变更带来的问题。
相关文章推荐
- Maven依赖的是本地工程还是仓库jar包?
- Maven依赖的是本地工程还是仓库jar包?
- Maven依赖的是本地工程还是仓库jar包?
- Maven依赖的是本地工程还是仓库jar包?
- maven 搜索不到想从本地仓库依赖的jar包--重建本地maven仓库索引
- Maven添加本地jar包、添加依赖jar文件到本地Maven仓库
- maven是怎么(或者说什么时候)把工程的jar包,下载到本地maven仓库所在位置的?
- Maven 本地仓库明明有jar包,但是pom文件还是报错解决办法
- Eclipse的maven工程依赖本地非repository中的jar包编译报错的解决方案
- maven打war包后无法依赖本地工程的jar包,造成debug时跳到class文件而不是本地java文件
- 使用maven将jar包生成maven依赖及pom到本地仓库
- maven 手动把本地jar安装到本地仓库,maven手动安装依赖jar包
- Maven如何手动添加依赖的jar文件到本地Maven仓库
- Maven如何手动添加依赖的jar文件到本地Maven仓库
- maven使用中央仓库没有的jar包001---Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理)
- Maven 将Jar安装到本地仓库和Jar上传到私服及依赖范围控制
- Maven如何手动添加依赖的jar文件到本地Maven仓库
- Maven 本地仓库明明有jar包,pom文件还是报错解决办法
- Maven添加中央仓库外部依赖、添加jar包到本地仓库
- maven 工程依赖了某个jar包 但还是报java.lang.ClassNotFoundException的问题