tomcat - Sonar 3.7 XML 配置文件 XHTML 验证失败

标签 tomcat proxy jenkins xhtml sonarqube

我正在尝试将 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/

相关文章:

proxy - http转https节点代理

用于生产部署的 Jenkins

tomcat - 托管另一个 ROOT.war Tomcat 应用程序

java - 无法通过 EL 将参数传递给方法 - javax.el.MethodNotFoundException

Linux Tomcat startup.sh 和 shutdown.sh 为空

hibernate - 当lazy=true 时,如何让equals() 与Hibernate 实体一起工作?

tomcat - 如何在不修改 web.xml 文件的情况下配置 tomcat 独立提供静态内容?

Python SOCKS5 代理客户端 HTTPS

Jenkins :没有一份测试报告包含任何结果

jenkins - 在 Jenkins 管道/groovy 中加入环境变量