在设置我的项目以使用travis后,我遇到了一个特殊的问题:在完全随机的情况下,由于maven无法提取所有依赖项,构建失败。
这个问题似乎与this question类似,因为主要的依赖性没有得到提升是jasperreports。但是,即使我将他们的回购添加到我的pom文件中之后问题仍然存在(对我来说这似乎是不好的做法,如果我错了,请纠正我。)
例如,请参阅this build。它失败了,但没有理由,因为在它通过之前的提交,并且改变不应该导致确定失败。它甚至失败了不同(具有不同的依赖关系,无法下载)。
我还注意到测试失败没有遵循任何模式:有时构建会通过,有时它只会在其中一个JDK上失败,而且通常它们都会失败。
有没有人对如何解决此问题有任何建议或想法?这是我的问题(maven / travis的配置)还是服务器端(网络?)的问题?
以下是错误的摘录:
[ERROR] Failed to execute goal on project carcv-webapp: Could not resolve dependencies for project org.carcv.webapp:carcv-webapp:war:1.0.0.Beta1-SNAPSHOT:
Failed to collect dependencies at net.sf.jasperreports:jasperreports:jar:5.2.0 -> com.lowagie:itext:jar:2.1.7.js2:
Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js2:
Could not transfer artifact com.lowagie:itext:pom:2.1.7.js2 from/to jasperreports (http://jasperreports.sourceforge.net/maven2):
Connection to http://jasperreports.sourceforge.net refused: Connection timed out -> [Help 1]
答案 0 :(得分:0)
问题似乎是网络问题,或者更确切地说是负载管理问题。 Maven似乎不喜欢jasperreports存储库响应的方式 - 对于最后几个构建,它只会挂起并且构建会超时(see here)。
有多种方法可以解决这个问题:
lib/
文件夹中,并让maven从那里加载我最喜欢第三种方法,所以我决定创建一个小的bash脚本:
#!/bin/bash
export DIR=$HOME/temp_jasper/
export TARGET=$HOME/jasper-mirror/
mkdir $DIR
cd $DIR
wget -r --page-requisites --convert-links --no-parent http://jasperreports.sourceforge.net/maven2/
mkdir $TARGET
mv $DIR/jasperreports.sourceforge.net/* $TARGET
安排一个cron作业,每天/每周/每月/手动(无论你想做什么)。
我使用httpd cartridge created by Stefano Zanella创建了一个OpenShift应用程序,在本地运行脚本以获取文件,将它们添加到git存储库的根目录中,然后推送。您可以实时查看存储库文件here。
之后,更改pom文件中的jasperreports存储库:
<repositories>
<!-- Own mirror of jasperreport's repository
Original: http://jasperreports.sourceforge.net/maven2/ -->
<repository>
<id>jasperreports-mirror</id>
<url>http://httpd-oskopek.rhcloud.com/maven2/</url>
</repository>
</repositories>
提交,推送并看到构建变为绿色。