我正在使用maven的声纳:声纳目标在我的Jenkins工作中生成Sonar报告。
我的Jenkins主机名是:jenhost.tst.com,My Sonar主机是sonhost.tst.com,My Sonar jdbc url是:jdbc:mysql://sonhost.tst.com:3306 / sonar,这个数据库有使用适当权限创建的用户名称声纳。
现在,在运行Maven目标时,我收到错误:
无法打开与数据库的连接:用户'sonar'@jenhost.tst.xxxx.com'拒绝访问(使用密码:是)
上述错误中的奇怪之处在于声纳用户试图以数据库名称而不是声纳主机来访问我的Jenkins主机。
我已经检查了我的Maven settings.xml,并且在那里正确地提到了Sonar的数据库URL,并且在Jenkins中也正确地提到了它。
有人对这个有任何线索吗?
答案 0 :(得分:6)
如果Sonar插件连接到localhost,则表明它正在使用默认设置。
使用Maven,有几种配置Sonar的方法。
jenkins的sonar plugin是启用Sonar的最简单方法。声纳属性是集中管理的
将以下配置文件添加到Maven设置文件($ HOME / .m2 / settings.xml)
<settings>
..
<profiles>
<profile>
<id>sonar</dev>
<activeByDefault>true</activeByDefault>
<properties>
<sonar.host.url>XXXXX</onar.host.url>
<sonar.jdbc.url>YYYYY</sonar.jdbc.url>
..
..
</properties>
</profile>
..
</profiles>
..
</settings>
阅读以下答案,以便在多个Jenkins项目中轻松管理Maven设置文件:
您可以按如下方式在POM中设置声纳属性:
<properties>
<sonar.host.url>XXXXX</onar.host.url>
<sonar.jdbc.url>YYYYY</sonar.jdbc.url>
..
..
</properties>
将sonar.properties文件导入到您的构建中
我赞成前两种方法中的一种。此选项需要更改项目中的文件。像密码这样的项目永远不应该被提交到版本控制中。
答案 1 :(得分:0)
在此处查看类似问题,获取
... [DEBUG] To prevent a memory leak, the JDBC Driver [com.mysql.jdbc.Driver] has been forcibly deregistered [DEBUG] Delete temporary directories ...
以后
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project commons-mdh: Can not execute Sonar: Fail to connect to database: Cannot create PoolableConnectionFactory (Communications link failure [ERROR] [ERROR] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.): Connection refused
只是为了找出,用telnet连接到mysql,mysql拒绝连接。
telnet: Unable to connect to remote host: Connection refused
因此,请确保您可以从jenkins连接到sonar和mysql。