Maven调试记录

公司网络有限制,需要通过代理上网,部分网站可以上,部分不能上,幸好,http://repo.maven.apache.org/还能用,通过settings.xml可以解决代理上网的问题

但问题来了,像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目录删除,再重新更新下就好了

猜你喜欢

转载自xwhuang.iteye.com/blog/2327492
今日推荐