这几天被maven搞死了,本来是在学习springcloud的。pom文件如下
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qiumingjie</groupId>
<artifactId>springcloud-client-order</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-client-order</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<!-- 管理依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.M7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot整合eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- SpringCloud整合feign客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
结果maven一直爆红,看了本地仓库也没有找到jar包,所有的jar包都是.lastUpdated,也就是下烂了,而同事却不会,而且用的是同一个局域网且换了4g试过,不是网络的问题导致的jar包下载不下来,一时间排查不了问题,就先拷贝同事的jar包到指定的位置,然后删除.lastUpdated文件和远程仓库文件和校验文件。都解决了。
操作可以看我另外一篇博客https://blog.youkuaiyun.com/Java_Studier/article/details/104966908
然而这个百试百灵的方法遇到瓶颈了,然后我开始以下排查
1.现在问题如下,maven爆红,下载jar包失败,提示的错误是
Could not find artifact org.springframework.cloud:spring-cloud-starter-openfeign:pom:2.0.0.M1 in aliyun (http://maven.aliyun.com/nexus/content/groups/public)
2.先去仓库看看jar包有没有下下来,我猜是下载失败了
果不其然,恶心的.lastUpdated文件,jar包下载失败,把所有.lastUpdated删除,刷新一下maven,发现还是不行,还是一样的,清缓存各种换网络还是不行,说明真下不来,这个时候没办法了
3.去同事那里拷贝它的仓库文件,大概路径是这样子的文件
仓库地址\org\springframework\cloud\spring-cloud-starter-openfeign\2.0.0.M1
这个是拷贝来的文件,很熟悉了_remote.repositores是指定远程仓库的,假如maven算过发现和本地不一样它会重新下载,所以为了防止maven重新下载,而且我也下载不了哈哈哈哈,我把它删了,.sha1是校验文件,也一并删了,-lastUpdate.properties是最后一次下载的信息,也可以删了,所以其实就是留下我要的jar包还有pom文件而已,放在自己的仓库里面
画风大概是这样子的,我想这样子就稳了吧,刷新一下maven,还是爆红,一样的错误,不过不一样的是它没有再下载了,说明了其实本地是有jar,可是idea扫不到
4.这个问题真是卡死我了,以为是idea的锅删了idea下载了最新版本的,结果发现还是一样,卡主的时候突然想到一件事,springcloud有指定一个仓库地址的在pom文件中配置的
然而我下载的时候报的错是
Could not find artifact org.springframework.cloud:spring-cloud-starter-openfeign:pom:2.0.0.M1 in aliyun (http://maven.aliyun.com/nexus/content/groups/public)
说明它是从阿里下载一直下载不下来导致的,于是乎检查一下idea的maven配置
发现一切没问题,user settings file指定的是maven的配置文件,local repository指定的是本地的maven仓库地址,而我的maven配置文件如下,就是配置了一个阿里的仓库
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>F:\mavenRepository</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
5.这个时候我想到我把这个镜像仓库删除之后让idea直接从pom文件指定的仓库去下载不就可以了吗,结果发现它还是不行,最后我发现直接把pom文件指定的仓库直接加到镜像中,它就会去指定的仓库中下载了,
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>F:\mavenRepository</localRepository>
<mirrors>
<mirror>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots></mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
6.修改了这个之后发现自己也能正常下载jar包不会失败了,归根结底就是maven一直从阿里下,而不是从pom文件中下载导致的,这个时候要讲pom文件中指定的仓库放在自己的maven配置文件中即可