maven依赖导入失败
1. 首先,一般安装好maven后,网上都会有教程将maven镜像站换为aliyun的镜像站,具体是在setting.xml文件的mirrors节点中添加如下配置:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2. 有的时候,依赖虽然下载失败了,但是相关文件夹中却多了以 .lastUpdated为后缀的文件,此时,如果开发者在开发工具中反复导入,会发现始终无法导入成功,这个时候就需要删除本地仓库中相关的 .lastUpdated文件,可以通过文件搜索找到本地仓库中所有的以 .lastUpdated为后缀的文件,找到后全部删除,再在开发工具中重新导入依赖。
maven install 和 maven package 的区别
在idea项目的maven窗口中可以快速执行命令
他们的具体区别也很简单:
如果service项目依赖dao项目,而dao打了包(package),jar仅仅时打到了dao项目的target下。
这时编译service项目,还是会报错,报错如下,找不到所依赖的dao项目,说明service项目在本地仓库是没有找到它所依赖的dao项目。
然后把dao项目install,本地仓库里有jar了,然后再打包package这个service项目,就不报错了。
idea编译的时候报错 java: 找不到符号
假设有两个微服务模块,分别叫A和B,A是你需要发布的项目,但是A里面引入了B。所以在A的项目资源中可以看到B.jar。当在B中新增了一些方法或者属性供A直接调用的时候,在本地测试或许好使。但是打包的时候会报错 java:找不到符号。而这个错误指向你那个新增的方法或属性。这是因为打包的时候,A引入的B.jar还是本地仓库里那个之前的B.jar,所以把B重新install一下,更新本地的B.jar到最新版。之后再打包。问题就消失了。
模块间的方法调用问题
例如module1模块要调用module2模块中的工具类。那么就在module1的pom文件中,引入module2即可。
- module1的pom.xml
<dependency>
<groupId> module2 的 groupId </groupId>
<artifactId> module2 的 artifactId </artifactId>
<version> module2 的 version </version>
</dependency>
- module2的pom.xml
<groupId> module2 的 groupId </groupId>
<artifactId> module2 的 artifactId </artifactId>
<version> module2 的 version </version>
<name>module2</name>
查看某个类属于哪个依赖
我用的开发工具是Idea,由于原项目中所有类已经引入好了,所以直接按住Ctrl键鼠标左键单击就会跳转到class中,然后再定位到这个class。
如图所示,引入一个依赖需要的信息都展示出来了。下面就是在需要该依赖的模块的 pom 文件中直接引入就可以了。
通过 feign 远程调用三方项目的接口
下图是微服务A的接口
我在另一个微服务B中想要调用这个接口:
前提:这两个项目都在注册中心之中已经相关的Feign依赖已经引入并配置完毕,在启动类上加@EnableFeignClients注解
1. 首先在B中声明一个接口,并添加注解@FeignClient,value值指向微服务A在注册中心中的服务名。requestMapping的请求类型和路径要和微服务A中的接口定义的一样。
2.在需要调用的类中注入,并直接调用其方法即可使用。