更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在SonarQube和Jenkins中使用Gradle分析Java代码

在SonarQube和Jenkins中使用Gradle分析Java代码

更新时间:2023-04-30 08:48:55浏览次数:539+次

本文介绍在SonarQube和Jenkins中使用Gradle分析Java代码的方法,前提条件是已在Linux系统中安装并运行SonarQube、及已安装并正在运行Jenkins服务、gradlew在代码的根目录中可用、SonarQube插件安装在Jenkins。

在SonarQube和Jenkins中使用Gradle分析Java代码的详细步骤

步骤1:在build.gradle文件中添加sonarqube插件

在源代码的根目录中打开“build.gradle”文件,并添加sonarqube插件行,如下所示:

plugins {

  id "org.sonarqube" version "2.7"

}

步骤2:在Jenkinsfile中添加Gradle stage的分析

在这一步中,我们将在Jenkins文件中添加一个stage,通知Jenkins我们应该使用SonarQube工具中的Gradle来分析代码。在Jenkinsfile中添加以下stage:

        stage ('Scan using Gradle') {

            steps {

                withSonarQubeEnv(installationName: 'SonarQubeScanner', credentialsId: 'SonarQubeSecret') {

                sh "./gradlew sonarqube \

                  -Dsonar.projectKey=${serviceName} \

                  -Dsonar.host.url=${env.SONAR_HOST_URL} \

                  -Dsonar.login=${env.SONAR_AUTH_TOKEN} \

                  -Dsonar.projectName=${serviceName} \

                  -Dsonar.projectVersion=${BUILD_NUMBER}"

                }

             }

        }

正如您所看到的,gradle将使用“sonarqube”任务运行,该任务由我们在步骤1中添加到“build.gradle”文件中的插件提供。我们还使用了“withSonarQubeEnv”包装器以及环境变量,如“${serviceName}”,您可以在Jenkinsfile环境部分/块中声明这些变量。

步骤3:建立管道

在这一步中,我们将构建或触发Jenkins来构建管道,我们希望它能从服务器上执行Gradle的Scanner。一旦Jenkins成功执行了所有stage,结果应该如下面的屏幕截图所示。您应该看到SonarQube图标,在那里您可以点击并在Jenkins中获得您的结果:

\

点击链接将重定向到SonarQube,您可以在那里查看您的结果,如下图所示:

\

步骤4:在Jenkinsfile中添加其他stage

扫描后,我们认为是时候构建应用程序并将其打包为jar文件或您喜欢的任何其他格式了。一个类似于下面的stage就足够了。但您会注意到,这里使用了安装在“/usr/local/gradle/”下的gradle应用程序,并使用了该命令周围的“withGradle”包装器。我们将很快在Jenkins中介绍gradle和gradle插件的安装,这样会更清楚。应该在“/build/libs/”目录中找到您的jar文件:

        stage('Build App'){

            steps {

         withEnv(["PATH=/usr/local/gradle/bin"]) { 

                withGradle {                 

                 sh "gradle  fatJar --no-daemon"

               } 

             }

           }

        }

至此,您的Java应用程序最终能够使用fatJar gradle任务进行分析和构建。