gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:41:26 25 4
gpt4 key购买 nike

情况:

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

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

  • 后期构建操作“使用 maven 进行 SonarQube 分析”,但它是 已弃用 ,所以我不想用它
  • 构建后步骤“执行 SonarQube 扫描仪”是推荐的方式。

  • 问题:

    如果我使用已弃用的 Post Build Action,则 Sonar 项目配置的属性会自动从项目 pom.xml 派生。

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

    You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources



    不受欢迎的解决方案 :

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

    恕我直言:这是重复。所有相关信息都在 Maven pom 中定义:projectKey 可以从 artifactId 派生,projectName 和 projectVerstion 在 maven 中是相同的属性。特别是 projectVersion 至关重要。我不想在每次发布后更新项目版本(或者在发布插件中编写一些代码来自动更新它)。

    我想要的

    我想在 Jenkins 中使用推荐的构建后步骤,而不为我的所有项目重新定义所有项目属性以使 Sonar 满意。相反 sonar/jenkins/plugin/whatever 应该从我的 maven pom 文件中派生属性。我可以使用其他插件吗?我可以重新配置我的 Jenkins-Sonar-Plugin 吗?

    我不想在我的 pom/项目中提供任何 Sonar 特定信息,因为该项目不应该关心 Sonar 。它应该只包含构建项目所需的信息。

    最佳答案

    The documentation (虽然有点令人困惑,请参见下面的编辑)解释了如何使用通用的构建后步骤(利用环境变量),而不是弃用的构建后操作。简而言之:

  • 在 Jenkins 中安装最新的 SonarQube 插件(目前为 v2.4)
  • 在 SonarQube 服务器下的系统配置中:检查 Enable injection of SonarQube server configuration as build environment variables
  • 在 Maven 项目的配置中:
  • 查看 Prepare SonarQube Scanner environment
  • 添加构建后步骤 Invoke top-level Maven targets并利用 Goals 中注入(inject)的环境变量字段例如:

    $SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN


  • 编辑 : 当 the documentationThe Post-build Action for Maven analysis is deprecated. ,它指的是旧的后期构建 行动 不再记录。该警告之后的段落(在此答案中进行了总结)确实是推荐的程序。插图 here如果还不清楚。

    关于maven - 从 Jenkins 的 pom 文件中自动派生强制性 SonarQube 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36884230/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com