当我从工作室运行测试用例时,所有测试用例都通过了,没有任何问题。但由于以下异常,它在詹金斯失败了
org.apache.tools.ant.BuildException
Caused by: org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException
当我查看互联网时,我知道这是因为詹金斯阻止了互联网,如果它无法下载依赖性,它将无法实现这一预期。但当我联系詹金斯it团队时,他们告知,如果我们在配置中传递代理,它总是会提供互联网。我已经通过如下。
sh "export ANDROID_HOME=/var/buildtools/android && export JAVA_HOME=/usr/java/jdk1.8.0_161 && export PATH=$PATH:/var/buildtools/gradle-4.10.1/bin && gradle -Dhttp.proxyHost=$http_proxy -Dhttp.proxyPort=$http_proxy_port -Dhttps.proxyHost=$https_proxy -Dhttps.proxyPort=$https_proxy_port assembleRelease codeCoverageReport"
那么这里的问题是什么呢?
这是roboelectric的一个问题,它试图在运行时下载一些依赖项,jenkins会阻止它,因为我们传递的代理不适用,如果它在运行时正在下载的话。因此,我们必须给出单元测试的代理,如下
testOptions {
unitTests.all {
systemProperty 'http.proxyHost', 'xxx.xx.xxx.xxx'
systemProperty 'http.proxyPort', 'xxxx'
systemProperty 'https.proxyHost', 'xxx.xx.xxx.xxx'
systemProperty 'https.proxyPort', 'xxxx'
}
unitTests{
returnDefaultValues = true
includeAndroidResources = true
}
}
必须在解决问题的android{...}
中添加此内容。