无法打开与数据库的连接.声纳,Maven和Jenkins

Man*_*shi 1 maven jenkins sonarqube

我正在使用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'拒绝访问(使用密码:YES)

上述错误中的奇怪之处在于声纳用户正在尝试访问我的Jenkins主机作为数据库名称而不是声纳主机.

我已经检查了我的Maven settings.xml,并且在那里正确地提到了Sonar的数据库URL,并且在Jenkins中也正确地提到了它.

有人对这个有任何线索吗?

Mar*_*nor 6

如果Sonar插件连接到localhost,则表明它正在使用默认设置.

使用Maven,有几种配置Sonar的方法.

詹金斯插件

jenkins 的声纳插件是启用Sonar的最简单方法.声纳属性是集中管理的

Maven设置

将以下配置文件添加到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>
Run Code Online (Sandbox Code Playgroud)

阅读以下答案,以便在多个Jenkins项目中管理Maven设置文件的简便方法:

Maven属性

您可以在POM中设置Sonar属性,如下所示:

<properties>
    <sonar.host.url>XXXXX</onar.host.url>
    <sonar.jdbc.url>YYYYY</sonar.jdbc.url>
    ..
    ..
</properties>
Run Code Online (Sandbox Code Playgroud)

或者使用properties插件将sonar.properties文件导入到您的构建中

我赞成前两种方法中的一种.此选项需要更改项目中的文件.像密码这样的项目永远不应该提交到版本控制中.