Maven依赖的是本地工程还是仓库jar包仓库

开发工具:STS(Spring Tool Suite)
建立springMVC的maven项目,平时使用的jar包都是在pom.xml文件配置依赖关系, maven会自动从仓库中下载,这样使用tomcat部署发布都没有问题。但有时我们需要使用maven仓库中不存在的包,这就需要自己配置。
右键单击工程名&&Build Path&&Configure Build Path&&Java Build Path&&Add JARs/Add External JARs,将需要的jar包加进去,点击OK。操作完这一步,代码编译不会报错。但部署启动tomcat,运行时会发现明明对应的jar包已经加进去了,但还是会报classNotFound之类的错误,这是因为tomcat没有发布刚才加进去的jar包,不信可以到tomcat部署位置去看(右键单击tomcat,Browse Deployment Location)。此时我们需要再右键单击工程名&&Build Path&&Configure Build Path,点击Deployment Assembly&&add&Java Build Path Entries,选中需要的jar包,finish。这样,重新部署工程,启动运行正常。
阅读(...) 评论()  相信大家都碰见过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依赖版本变更带来的问题。
如果发现没有依赖本地工程,建议检查下响应依赖的版本。
如果还有问题的话,请检查工程(被依赖的工程)是否允许workspace resolution,步骤:maven -& Enable Workspace Resolution。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6624次
排名:千里之外
(1)(2)(1)(1)(1)(2)(3)(2)11:39 提问
maven项目本地仓库有jar包,但是pom.xml却提示依赖关系报错!这是怎么处理
按赞数排序
贴出具体描述来,这样看不出来
其他相似问题随笔-1817&
大家肯定遇到过想在文件中加入自己开发的依赖包,这些包肯定是不是在Maven仓库(http://repo1.maven.org/maven2/)的。那我们怎么将那些不存在Maven仓库中的包加入到本地的Maven库中呢?很简单。这里以IKAnalyzer.jar包为例进行讲解。  第一步:将IKAnalyzer.jar包存放在一个文件夹中,比如mylib文件夹  第二步:建一个IKAnalyzer.jar包相关的.xml文件,需要在.xml中定义其maven坐标及其相应的依赖代码即可,同样将pom文件存放在上述jar文件同一文件夹下,IKAnalyzer.jar坐标及依赖代码的pom.xml文件内容如下:
&project 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/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&org.wltea.ik-analyzer&/groupId&
&artifactId&ik-analyzer&/artifactId&
&version&3.2.8&/version&
&name&IK Analyzer 3&/name&
&description&A dictionary and grammar-based Chinese segmenter&/description&
&dependencies&
&dependency&
&groupId&org.apache.lucene&/groupId&
&artifactId&lucene-core&/artifactId&
&version&3.0.3&/version&
&optional&true&/optional&
&/dependency&
&dependency&
&groupId&org.apache.solr&/groupId&
&artifactId&solr-core&/artifactId&
&version&1.4.1&/version&
&optional&true&/optional&
&/dependency&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&3.8.2&/version&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.apache.lucene&/groupId&
&artifactId&lucene-analyzers&/artifactId&
&version&3.0.3&/version&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.apache.lucene&/groupId&
&artifactId&lucene-smartcn&/artifactId&
&version&3.0.3&/version&
&scope&test&/scope&
&/dependency&
&/dependencies&
&/project&
  第三步:打开CMD,进入到mylib文件夹,运行下面命令(不要换行,用空格)
mvn install:install-file
-Dfile=IKAnalyzer3.2.8.jar
-DgroupId=org.wltea.ik-analyzer
-DartifactId=ik-analyzer
-Dversion=3.2.8
-Dpackaging=jar
这样你就可以将IKAnalyzer3.2.8.jar安装到您Maven本地的库文件夹相应目录中。你可以根据你需要安装包的实际情况修改上面的几个参数的设定值即可。之后你可以在pom.xml文件中通过以下依赖在项目中引入上述的包,如下:
&dependency&
&groupId&org.wltea.ik-analyzer&/groupId&
&artifactId&ik-analyzer&/artifactId&
&version&3.2.8&/version&
&/dependency&
当然你也可以不将IKAnalyzer3.2.8.jar发布到您本地的Maven库中,而是通过下面配置引入,效果和上面的差不多:
&dependency&
&groupId&org.wltea&/groupId&
&artifactId&IKAnalyzer&/artifactId&
&version&3.2.8&/version&
&systemPath&C:\Users\yangping\Desktop\a\IKAnalyzer3.2.8.jar&/systemPath&
&/dependency&
不要依赖的jar加入本地仓库示例:
第一步:将mon-1.0.jar包存放在一个文件夹中,比如mon文件夹第二步:建一个mon-1.0.jar包相关的pom.xml文件,需要在pom.xml中定义其maven坐标及其相应的依赖代码即可,同样将pom文件存放在上述jar文件同一文件夹下,mon-1.0.jar坐标及依赖代码的pom.xml文件内容如下:
&project 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/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&cn.mon&/groupId&
&artifactId&</mon&/artifactId&
&version&1.0&/version&
&name&</mon&/name&
&description&&/description&
&/project&
第三步:打开CMD,进入到on文件夹,运行下面命令(不要换行,用空格)
mvn install:install-file -mon-1.0.jar -DgroupId=cn.mon -mon -Dversion=1.0 -Dpackaging=jar
加入成功,再到本地仓库看到如下:
阅读(...) 评论()&|&&|&&|&&|&&
当前位置: >
Maven实战(十一)eclipse下载依赖jar包出问题
作者:互联网 & 来源:转载 &
浏览次数:
摘要: 问题描述
在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖
大致错误如下: ArtifactDescriptorException: Failed to read artifact descriptor for commons-beanutils:commons-beanutils-core:jar:1.8.0: ArtifactResolutionExceptio
在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖
大致错误如下: ArtifactDescriptorException: Failed to read artifact descriptor for commons-beanutils:commons-beanutils-core:jar:1.8.0: ArtifactResolutionException: Could not transfer artifact commons-beanutils:commons-beanutils-core:pom:1.8.0
解决问题思路
1. 先查看本地仓库是否有这个jar包,即是否下载成功
一般是未下载成功,有时候可能是网络问题,那么删除了重试
即update maven project,右键项目:maven-&update project
并勾选force选项,如果勾选force,那么不用删除未下载成功的残余文件,在大量jar包未下载成功的时候可以选择勾选force
2. 查看仓库配置
如果发现没有下载成功,则立即检查eclipse连接的仓库是否有问题
window-&show view-&maven repositories
如果仓库配置正确了,掠过此步骤,如果这里的仓库地址配置不对
那么看settings.xml
%m2_home%\settings.xml
是否配置镜像
注意这里对应public仓库
或者是否有配置仓库
当然,有的项目在pom.xml里面也指定了仓库地址,那么以pom.xml为优先考虑
3. 去仓库查看是否有对应的jar
搜索仓库,如果发现了对应的jar,基本是网络问题,或者是之前的仓库配置有问题
配置正确重试即可,如果没有,那么说明现有的仓库里没有对应的jar,解决方法有2种
1)配置更多的仓库
看public仓库的配置
左边的仓库表示是正在用的仓库,如果有Central,基本能下载到常用的jar
如果没有,可以考虑再添加新的仓库,有时候可能我们把Central拖到右边去了,导致下载不到
2)自己上传jar到仓库
具体请参考我之前的文章:
4. 更新maven index
以上方法试过了都不行,可以重新更新索引
右键仓库并选择update index
最后强制更新maven项目,基本就可以了,如果还有问题,请联系我
版权所有 IT知识库 CopyRight (C)
, All Rights Reserved.}

我要回帖

更多关于 上传jar包到maven仓库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信