当前位置: 首页 > 知识库问答 >
问题:

从Jenkins中的pom文件自动派生强制SonarQube属性

符献
2023-03-14

情况:

我想用由Jenkins(1.642.4)触发的SonarQube(5.4)来分析我的项目。这是一个用Maven构建的java项目。

我看到了两种触发分析的方法:

    null

问题:

如果我使用不推荐使用的Post Build操作,则sonar项目配置的属性将自动从项目POM派生。

如果我使用推荐的构建后步骤,我将收到异常

必须为“Unknown”定义以下强制属性:Sonar.ProjectKey、Sonar.ProjectName、Sonar.ProjectVersion、Sonar.Sources

解决方案是通过java项目中的sonar-project.properties文件或Jenkins步骤中的参数提供所需的属性。

伊霍:这是重复。所有相关信息都在Maven POM中定义:projectKey可以从artifactId派生,projectName和projectVerstion在Maven中是相同的属性。特别是projectVersion是关键的。我不想在每次发布后更新项目版本(或者在发布插件中编写一些html" target="_blank">代码自动更新)。

我想要的

我不想在我的POM/项目中提供任何声纳特定的信息,因为项目不应该关心声纳。它只应包含生成项目所需的信息。

共有1个答案

宣冥夜
2023-03-14

文档(虽然有点混乱,请参见下面的编辑)解释了如何使用一般的构建后步骤(利用环境变量),而不是不推荐使用的构建后操作。简而言之:

>

  • 在Jenkins中安装最新的SonarQube插件(从现在起为2.4版)
  • 在SonarQube Servers下的System Config中:选中Enable injection of SonarQube server configuration as build environment Variable
  • 在Maven项目的配置中:
    • 检查准备SonarQube扫描器环境
    • 添加构建后步骤调用顶级Maven目标并利用目标字段中注入的环境变量,例如:

      $SONAR_MAVEN_GOAL-dsonar.host.url=$SONAR_host_URL-dsonar.login=$SONAR_AUTH_TOKEN

      编辑:当文档显示Maven analysis的后构建操作被弃用。时,它指的是不再有文档记录的旧的后构建操作。警告之后的段落(在本答案中总结)实际上是推荐的程序。如果还不清楚,请在这里举例说明。

  •  类似资料:
    • 问题内容: 情况: 我想用由詹金斯(1.642.4)触发的SonarQube(5.4)分析我的项目。它是使用maven构建的Java项目。 我看到两种触发分析的方法: 发布构建操作“使用maven进行SonarQube分析”,但 已弃用 ,所以我不想使用它 推荐的构建后步骤是“执行SonarQube扫描仪”。 问题: 如果我使用了不赞成使用的Post Build Action,那么声纳项目配置的属

    • 我只是使用SonarQube-Plugin for Jenkins并配置Jenkins作业来执行SonarQube扫描器。如果我在UI中保留analysis属性,而sonar-scanner.properties为空,则缺少强制属性。根据这个问题,至少应该从maven属性自动派生。如果我直接设置和属性,那么一切都可以正常工作。但是如何才能实现maven属性被插件使用呢? 编辑:如果我将UI中的分析

    • 我将基于Maven的Spring应用打包为: 奇怪的事情发生了。在生成的jar的META-INF中,我发现重复的pom.xml和pom.properties文件。有人能解释一下吗?谢谢。 这里是提取pom.xml 命令的输出: ApacheMaven 3.0.4(r1232337;2012-01-17 15:44:56 0700)Maven主页:C:\Apache-Maven-3.0.4\bin。

    • 我有如下表格: 我创建了如下pojo类: 另一个类 现在,我尝试使用JOOQ从数据库中获取记录。但我无法将json组件字符串转换为组件类。 我正在读取下表中的数据: 在数据库中,我有以下记录。 获取数据时,我收到以下错误 我是JOOQ的新手。如果我错过了什么,请告诉我。提前谢谢。

    • 当前情景: 父pom有一个distributionManagement部分,其中定义了两个存储库(发布和快照);请参阅以下内容: 父pom: 基于同一pom中指定的“版本”,maven会自动识别是在发布中部署工件还是在nexus中部署快照存储库。(我相信这是使用版本是否有任何“-SNAPSHOT”后缀来完成的。) 有一个子pom定义了一些部署文件目标;请参阅以下内容: 儿童pom: 问题: 正如您

    • 但是,它仍然溢出父文件夹中所有生成的文件。 附言。这应该无关紧要,但我的环境是macOS。