相信大家都碰见过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包?的更多相关文章

  1. 转:MAVEN依赖的是本地工程还是仓库JAR包?

    相信大家都碰见过 maven 配置的依赖或者是 jar 包或者是工程,在开发的过程当中,我们当然需要引入的是工程,这样查看 maven 依赖的文件的时候,就能直接查看到源码. 一.本地工程依赖 举个例 ...

  2. 解决maven无法加载本地lib/下的jar包问题(程序包XXX不存在)

    这次一个项目用到maven编译,我在本地开发的时候jar包都是放在WEB-INF/lib目录下,通过 BuildPath将jar包导入,然后用MyEclipse中的:maven package命令打成 ...

  3. 【转】解决maven无法加载本地lib/下的jar包问题(程序包XXX不存在)

    原文链接:https://www.cnblogs.com/adeng/p/7096484.html 这次一个项目用到maven编译,我在本地开发的时候jar包都是放在WEB-INF/lib目录下,通过 ...

  4. 用eclipse怎样将本地的项目打成jar包上传到maven仓库

    使用maven的项目中,有时需要把本地的项目打成jar包上传到mevan仓库. 操作如下: 前提:pom文件中配置好远程库的地址,否则会报错 1.将maven 中的settings文件配置好用户名和密 ...

  5. eclipse 如何修改maven插件本地仓库jar包默认存储位置

      eclipse 如何修改maven插件本地仓库jar包默认存储位置 CreateTime--2018年4月18日11:04:47 Author:Marydon 1.更改eclipse的maven本 ...

  6. 解决maven仓库有jar包但是maven程序无法下载仓库jar包

    话说,这个问题困扰了我两个多月了已经~~~ 后来发现不知道被谁动了,把我的仓库没有放到仓库组里面~~~ 用admin登录进去,默认密码是admin123,然后看截图操作吧. (记得删除你本地报错说** ...

  7. java工程打包成jar包,并且解压lib里的jar包

    在我们开发完java工程部署时,有时不需要web容器,为了方便部署有时候需要打成jar包. 这里介绍2种Eclipse打jar包的方式, 方式一.工程引用的jar包打在lib目录下 1.工程上右键,E ...

  8. 既使用maven编译,又使用lib下的Jar包

    <build> <finalName>xxx</finalName> <plugins> <plugin> <groupId>o ...

  9. 在java工程中导入jar包的注意事项

    在java工程中导入jar包后一定要bulid path,不然jar包不可以用.而在java web工程中导入jar包后可以不builld path,但最好builld path.

随机推荐

  1. express的学习,与使用

    最近在学习vue的一个实战项目,碰到一个express,当时很萌,就随便看了看................ expres是基于node 的一个web框架, 首先可以找到它的官网照着学习 这里只讲一 ...

  2. J-Link驱动下载和Hex程序下载

    J-LINK驱动下载 1.首先拥有硬件J-Link硬件. 2.安装J-Link驱动程序SEGGER 下载地址如下 https://www.segger.com/downloads/jlink/JLin ...

  3. Machine Learning &&Deep Learning&&Sklearn

    参考资料:https://github.com/ty4z2008/Qix/blob/master/dl.md https://morvanzhou.github.io/ 如图,先了解一下都有什么模型方 ...

  4. [转]查询 SQL Server 系统目录常见问题

    查询 SQL Server 系统目录常见问题 http://msdn.microsoft.com/zh-cn/library/ms345522.aspx#_FAQ4 下列部分按类别列出常见问题. 数据 ...

  5. 用JavaScript实现表格编辑器

    实现效果: htm l代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  6. Python 面向对象(三) 魔术方法

    __getitem__ 在对实例或对象使用索引访问时调用,self[key]__dir__ 收集当前模块的信息,包括继承自其它基类(包括object类)的属性和方法 __new 定义如何创建实例__i ...

  7. pku 1061 青蛙的约会 扩展欧几里得

    青蛙的约会Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 120482 Accepted: 25449Description 两只青 ...

  8. PHP扩展代码结构详解

    PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...

  9. Retrofit网络请求库应用02——json解析

    PS:上一篇写了Retrofit网络请求库的简单使用,仅仅是获取百度的源码,来证明连接成功,这篇讲解如何解析JSON数据,该框架不再是我们之前自己写的那样用JsonArray等来解析,这些东西,我们都 ...

  10. springmvc 4.3,RequestParamMethodArgumentResolver无法正常解析String参数问题解决

    搭建一个新工程时,想使用最新稳当版的springmvc,所以选择了最新的版本 <dependency> <groupId>org.springframework</gro ...