我在pom.xml中有以下内容来启用声纳插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.7.1</version>
</plugin>
我还设置了属性来定义在端口80上运行的服务器:
<properties>
<sonar.host.url>http://sonar.for.truelocal.com.au/</sonar.host.url>
</properties>
从我的Bamboo服务器运行时,一切正常,分析将发送到服务器。
然后我想在我的本地环境中运行预览报告。我的本地环境是Mac 10.11.2,其中Java 7位于代理服务器后面。
我在dev Maven个人资料中添加了一些额外的属性:
<sonar.analysis.mode>preview</sonar.analysis.mode>
<sonar.issuesReport.console.enable>true</sonar.issuesReport.console.enable>
<sonar.issuesReport.html.enable>true</sonar.issuesReport.html.enable>
不幸的是,声纳步骤失败了以下内容:
[DEBUG] Create : /Users/w26702/.sonar/cache/_tmp
[DEBUG] Extract sonar-runner-batch in temp...
[DEBUG] Get bootstrap index...
[DEBUG] Download: http://sonar.for.truelocal.com.au/batch_bootstrap/index
[DEBUG] Get bootstrap completed
[DEBUG] Download http://sonar.for.truelocal.com.au/batch/sonar-batch-shaded-5.2.jar to /Users/w26702/.sonar/cache/_tmp/fileCache3157929989449184462.tmp
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar (default) on project truelocal-api: Fail to download libraries from server: Fail to download sonar-batch-shaded-5.2.jar to /Users/w26702/.sonar/cache/_tmp/fileCache3157929989449184462.tmp: timeout: Read timed out -> [Help 1]
请注意,最后一行是指定一个与我在pom中引用的插件不同的插件。这是因为在org.codehaus.mojo 2.7.1不起作用之后我切换到了org.sonarsource.scanner.maven 3.0.1,但它没有任何区别。
我在运行构建时登录到我的sonarqube服务器并通过访问日志进行了操作,实际上我看到了/ batch_bootstrap / index和/batch/sonar-batch-shaded-5.2.jar对HTTP 200 OKs的请求。
似乎收到了索引但是.jar不是。
然后我只是在我的网络浏览器中手动浏览jar地址并正确下载。
然后我从公司网络断开连接,而是连接到没有代理的手机。
当像这样运行时,下载罐子并且分析运行没有问题。
当我将我的机器放回代理后面时,分析继续运行而没有问题,因为现在已经成功下载了jar。
所以我的问题是,在代理后面下载jar的插件是否存在错误?
我不能排除我的公司网络导致问题的可能性,但包括声纳-maven-plugin jar在内的其他罐子本身没有问题。
我的Sonarqube服务器版本在带有PostgreSQL后端的Amazon Linux上为5.1-1。
答案 0 :(得分:3)
此版本的sonar-maven-plugin似乎无法从Maven settings.xml获取代理参数
所以你需要为javaOpts提供代理参数:
例如:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar -Dhttp.proxyHost=proxy.mycompagny.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.mycompagny.com -Dhttps.proxyPort=8080
答案 1 :(得分:0)
有些用户已经报告某些公司代理正在根据用户代理过滤内容。这可以解释为什么允许您从浏览器而不是从Maven下载JAR。