最近学习dubbo,在本地模拟了一个服务端、一个客户端,客户端需要引入服务端的jar包,因为是跨进程引入,所以需要服务端打包、然后客户端引入maven依赖。本以为很简单的事情,到头来花费不少时间。现在记录一下,以后踩坑回来翻一翻。
下面是我客户端引入服务端的依赖,pom文件可以引入,不报错,但是使用其中的类使用不了。
对于这个问题,我尝试过清空仓库、修改仓库地址、删除jar的remote文件,不能说没有用,偶尔会正常引用到目标类,这就很奇怪了。
经过不断尝试,最后在打包过程中更换打包方式解决了问题(我尝试了五次,都可以成功引用到),出问题的时候使用的是idea的maven工具去打包的,点一下install直接生成的。后来改为自己命令打包,算是解决了问题。
我的操作流程如下:
1.先复制一份仓库中的jar包到D盘根目录下。
2.从父目录删掉要导入的整个jar包,。
3.在D盘根目录运行:
mvn install:install-file -Dfile=wc-api-1.0-SNAPSHOT.jar -DgroupId=com.wc.alibaba.server -DartifactId=wc-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar
根据自己jar包情况酌情修改。
4.重新生成jar后,再在客户端重新引入,先把依赖干掉,然后让maven引入一次,再把依赖加上然后再让maven引入一次(我此时已经不怎么相信idea工具了)。
到这儿我的外部jar可以正常使用了,注意手动打包不要使用mvn install,比如切换目录到被打包项目根目录然后运行下面命令:
mvn install -DgroupId=com.wc.alibaba.server -DartifactId=wc-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar
我也不知道为什么,在项目根目录运行mvn install命令生成的jar包客户端不可以使用而
mvn install:install-file 就没问题。