但问题来了,像spring.io这样的大站上不去,很多依赖都下不来,虽然repo.maven网站也有,但pom文件中指定了spring,总不能改pom吧,那岂不是累死了?
1、于是想办法,看看能否用mirror替代repository(在profile里面)
2、刚开始想,jdk就不用配置了吧,于是在profiles里面只配置了个简单的repository,发现不行,原来profile的ID还是要配置的:
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<repositories>
<repository>
<id>springio</id>
<url>http://repo.spring.io/libs-release/</url>
</repository>
</repositories>
</profile>
<profiles>
<mirrors>
<mirror>
<id>springio</id>
<mirrorOf>springio</mirrorOf>
<url>http://repo.maven.apache.org/maven2/</url>
</mirror>
</mirror>
</mirrors>
这样就可以了,马上依赖就下载下来了,mvn开启-X后,提示:
[DEBUG] Using mirror springio (http://repo.maven.apache.org/maven2/) for springio (http://repo.spring.io/libs-release/).
3、还没高兴太久,马上又报失败,看一下日志,原来在Building的时候,查找依赖包还是失败,竟然是还是springio网站,百思不得其解,于是尝试下mirror增加全部匹配:
<mirror>
<id>mirrorId</id>
<mirrorOf>*</mirrorOf>
<url>http://repo.maven.apache.org/maven2/</url>
</mirror>
4、哈哈,成功了,看来可能maven的mirror替代机制还是有些问题的
5、事情总不是一帆风顺,依赖是下载成功了,但compile的时候又失败了,放上日志:
Downloading: http://repo.maven.apache.org/maven2/org/aspectj/aspectjweaver/1.8.9/aspectjweaver-1.8.9.pom
Downloaded: http://repo.maven.apache.org/maven2/org/aspectj/aspectjweaver/1.8.9/aspectjweaver-1.8.9.pom (2 KB at 0.8 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/aspectj/aspectjweaver/1.8.9/aspectjweaver-1.8.9.jar
[WARNING] Checksum validation failed, expected db28774f477f07220eac18d5ec9c4e01f48589d7 but is 3723a1d9d038a7d0c62dcd005e750da3887e5580 for http://repo.maven.apache.org/maven2/org/aspectj/aspectjweaver/1.8.9/aspectjweaver-1.8.9.jar
[WARNING] Checksum validation failed, expected db28774f477f07220eac18d5ec9c4e01f48589d7 but is 3723a1d9d038a7d0c62dcd005e750da3887e5580 for http://repo.maven.apache.org/maven2/org/aspectj/aspectjweaver/1.8.9/aspectjweaver-1.8.9.jar
Downloaded: http://repo.maven.apache.org/maven2/org/aspectj/aspectjweaver/1.8.9/aspectjweaver-1.8.9.jar (167 B at 0.4 KB/sec)
6、这里,下载的jar包是完全错误的,pom文件倒是正确的,看报错是checksum文件有问题,stackoverflow有同样的解答:
mvn clean install 时加上 -DcreateChecksum=true 参数就可以了
7、然后,继续失败,stackoverflow上建议可以加上-Dmaven.artifact.threads=1
部分还是失败,但已经非常少了,先通过手工下载
8、OK,Build成功
-----------------
最近在尝试jfinal cms时,发现commons-io没有下载成功,提示
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]
-----------------------------------------------------
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:130) ... 20 more Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/input/XmlStreamReader
上了repo.maven.apache.org/maven2 发现commons-io只有1.3.2版本的,而jfinal cms用的是2.2版本,再看了下,原来maven资源网站有新地址,.m2下的settings.xml改为
repo1.maven.apache.org/maven2就可以了
如果还报错,将本地的commons-io\commons-io\2.2目录删除,再重新更新下就好了