Maven依赖之解决Maven优先使用Eclipse工作空间项目而非Maven库jar包有关问题

时间:2023-01-19 17:05:34


通常会有这样的两种情况:1,在项目开发阶段时,我们想优先使用工作空间的项目代替maven库中的jar包.2,项目测试时我们想优先使用maven库中的jar包代替工作空间的项目.下面对如何调整优先级做一点分享(个人实验得来的经验,不够官方,如果更好的方案还请指教).这里我们将用两个项目分别叫biz和dao作为演示.其中biz依赖dao.

 

原理:

maven项目在查找依赖时会首先查看工作空间是否有满足当前groupid, artifactid, version条件的项目,如果有就会将其引入进来,此时你在maven的依赖里就会看到文件夹形式的依赖,这就是项目依赖.否则你就会看到一个jar包被引入进来.

 

这两种引用各有好处,当进行项目开发时我们可能需要频繁地更改dao里的代码,此时当你改变或者添加了一些biz编译所必须的代码,这时你的biz包里是不能马上生效,你需要将改变后的dao包装入maven库(本地或者远程)才能在biz层继续.这样就非常麻烦.所以如果此时


你用了项目依赖(即文件夹形式),你就不用将包装入maven库,直到你需要打包biz时你才需要去将dao代码装入maven库.

因为打包时的依赖必需从maven库上取得.  

但同时我们可能也有这样的情况,比如我们引入进来的代码是用来看的源码,又或者是我们想测试当前maven库上的包在编译时会不会还有错误等等,此时你可能非常想依赖maven库上的dao包来编译biz包.此时我们就需要用到第二种情况.

 

解决方案 :

1,在项目开发阶段时,我们想优先使用工作空间的项目代替maven库中的jar包

a,当我们通常情况下,在biz项目里,maven会自动使用dao项目作为依赖,前提是groupid, artifactid, version这三个参数要和biz所依赖的相同.如果没有使用项目依赖,可以手动用maven更新一下biz项目就可以了.

 

2,项目测试时我们想优先使用maven库中的jar包代替工作空间的项目

a,关闭工作空间中打开的dao项目.此时maven会自动使用maven库中的jar包进行编译.

b,修改groupid, artifactid, version中的一个参数,此时maven由于在工作空间中找不到相对应的项目也会自动使用maven库中的jar包进行编译.建议修改version参数.


转载自: Maven依赖之解决Maven优先使用Eclipse工作空间项目而非Maven库jar包有关问题