我正在尝试将 Sonar Web 和 XML 质量概况分析添加到我稳定的 Java 概况分析套件中。 Sonar XML 质量配置文件分析无法完成 XHTML 验证。我怀疑问题是由于代理问题,验证引擎无法通过互联网访问 XML 模式。
错误:
[INFO] [11:48:07.587] Sensor XmlSourceImporter...
[INFO] [11:48:23.354] Sensor XmlSourceImporter done: 15767 ms
[INFO] [11:48:23.354] Sensor XmlSensor...
[INFO] [11:48:23.557] Validate Exit.xhtml with schema xhtml1-transitional
[ERROR] [11:48:44.542] Could not analyze the file D:\Jenkins_home\.jenkins\jobs\...\Exit.xhtml
org.sonar.api.utils.SonarException: java.net.ConnectException: Connection timed out: connect
at org.sonar.plugins.xml.checks.XmlSchemaCheck.validate(XmlSchemaCheck.java:248) ~[na:na]
at org.sonar.plugins.xml.checks.XmlSchemaCheck.validate(XmlSchemaCheck.java:227) ~[na:na]
at org.sonar.plugins.xml.checks.XmlSchemaCheck.validate(XmlSchemaCheck.java:259) ~[na:na]
at org.sonar.plugins.xml.XmlSensor.analyse(XmlSensor.java:69) ~[na:na]
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:72) [sonar-batch-3.7.1.jar:na]
配置:
- 在 Windows Server 2003 上的 Tomcat 中安装了 Tomcat 7.0.11 和 Jenkins 1.509.3 以及 Sonar 3.7.1。
- 插件版本:Sonar XML 1.0 版、Jenkins Sonar 2.1 版、Jenkins Subversion 1.50。
- Jenkins Maven 2.2.1 作业触发 Sonar 分析。
- 使用代理服务器(公司配置)保护所有网络访问。
- Sonar 在 conf/sonar.properties 中配置了代理服务器属性(证明:能够访问 Sonar 更新中心 - 如果 Tomcat 代理开关配置为允许代理访问,如下所示)。
- Tomcat Java 进程配置了空的 -Dhttp.proxyHost 和 -Dhttp.proxyPort 开关以抑制从 Windows 传递的代理设置。这是必需的,因此代理信息不会传递给 Jenkins(如果从 Tomcat 传递代理开关,Jenkins Subversion 访问将失败)。
我认为我处于陷阱 22,我需要 Tomcat 来抑制代理设置以便 Jenkins Subversion 访问有效,但需要 Tomcat 代理设置才能使 Sonar XML 分析正常工作。也许我需要放弃 Tomcat 以支持独立安装 Jenkins 和 Sonar?
我的代理设置分析是否正确和/或是否有其他 Sonar 配置我可以尝试让 XHTML 验证工作?
最佳答案
我通过配置Jenkins使用的Maven安装使用代理连接网络解决了这个问题。引用:http://maven.apache.org/guides/mini/guide-proxies.html .在 Maven 代理配置中,我在 *.<corporate-domain-root>.*
中添加了内部网 URI ( <nonProxyHosts>
) .
conf/sonar.properties 中的 Sonar 代理服务器属性不是必需的。
现在,Jenkins 和 Sonar 是通过 Tomcat 启动的,没有代理设置(即空的 -Dhttp.proxyHost
和 -Dhttp.proxyPort
开关)。当 Jenkins 作业通过 Maven 触发 Sonar 分析时,Maven 能够在进行 XML 模式验证检查时通过代理配置调用互联网。
关于tomcat - Sonar 3.7 XML 配置文件 XHTML 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20354719/