Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 从Jenkins中的pom文件自动派生必需的SonarQube属性_Maven_Jenkins_Continuous Integration_Sonarqube_Sonarqube Scan - Fatal编程技术网

Maven 从Jenkins中的pom文件自动派生必需的SonarQube属性

Maven 从Jenkins中的pom文件自动派生必需的SonarQube属性,maven,jenkins,continuous-integration,sonarqube,sonarqube-scan,Maven,Jenkins,Continuous Integration,Sonarqube,Sonarqube Scan,情况: 我想用Jenkins(1.642.4)触发的SonarQube(5.4)分析我的项目。这是一个使用maven构建的java项目 我认为有两种方法可以触发分析: 构建后操作“SonarQube分析与maven”,但它已被弃用,因此我不想使用它 建议使用构建后步骤“执行SonarQube扫描仪” 问题: 如果我使用不推荐的后期构建操作,sonar项目配置的属性将自动从项目pom派生 如果我使用建议的构建后步骤,我会收到异常 必须为“未知”定义以下必需属性:sonar.projectKey、s

情况:

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

我认为有两种方法可以触发分析:

  • 构建后操作“SonarQube分析与maven”,但它已被弃用,因此我不想使用它
  • 建议使用构建后步骤“执行SonarQube扫描仪”
  • 问题:

    如果我使用不推荐的后期构建操作,sonar项目配置的属性将自动从项目pom派生

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

    必须为“未知”定义以下必需属性:sonar.projectKey、sonar.projectName、sonar.projectVersion、sonar.sources

    不需要的解决方案

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

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

    我想要什么

    我想在Jenkins中使用建议的后期构建步骤,而不必为我的所有项目重新定义所有项目属性,以使sonar满意。相反,sonar/jenkins/plugin/which应该从我的maven pom文件中派生属性。有没有其他插件我可以使用?我可以重新配置詹金斯声纳插件吗

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

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

    • 在Jenkins中安装最新的SonarQube插件(目前为v2.4)
    • 在SonarQube服务器下的系统配置中:选中
      将SonarQube服务器配置作为构建环境变量启用注入
    • 在Maven项目的配置中:
      • 检查
        准备声纳QUBE扫描仪环境
      • 添加构建后步骤
        调用顶级Maven目标
        并利用
        目标
        字段中注入的环境变量,例如: $SONAR\u MAVEN\u GOAL-Dsonar.host.url=$SONAR\u host\u url-Dsonar.login=$SONAR\u AUTH\u令牌


    编辑:当说
    用于Maven分析的生成后操作不推荐时。
    ,它指的是不再记录的旧生成后操作。警告之后的段落(在本答案中总结)实际上是建议的程序。如果仍不清楚,请进行说明。

    使用SonarQube扫描仪作为生成后步骤,您可以在分析属性中至少使用以下属性对其进行配置:

    sonar.projectKey=${POM_ARTIFACTID}
    sonar.projectName=${POM_DISPLAYNAME}
    sonar.projectVersion=${POM_VERSION}
    sonar.sources=src
    sonar.java.binaries=target
    sonar.language=java
    sonar.sourceEncoding=UTF-8
    

    POM.*变量由Jenkins从Maven GAV info映射,请看这里:

    感谢您的回答,但在链接的文档中,您可以看到以下文本:“Maven分析的构建后操作已弃用。Maven分析的构建后操作已弃用。”不幸的是,这个解决方案不符合我的要求。你误解了文档:不推荐的是构建后操作。我的回答和文档(警告下方)中描述的是使用标准Maven构建步骤(和环境变量注入)的推荐方法。看这个,你是对的。此maven目标作为构建后步骤执行。因此,不推荐使用该解决方案。我将删除我的答案,因为正如您所说的,这是一个坏主意,因为并没有自动化的项目结构使用。谢谢