使用 Jacoco 插件时 Jenkins 管道中的空指针异常

Null pointer exception in Jenkins pipeline when Jacoco plugin is used

当我使用 Jacoco 插件时,Jenkins 管道出现空指针异常错误。如果我从 Jenkinsfile 中注释掉 Jacoco 步骤,则不会抛出任何错误。 Jenkins 中的日志文件表明错误是在管道结束后抛出的。 下面是日志消息和 Jenkins 文件的详细信息。知道为什么会抛出这个错误吗?

[Pipeline] // node
[Pipeline] End of Pipeline
java.lang.NullPointerException
    at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:87)
    at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:70)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start[=10=](SynchronousNonBlockingStepExecution.java:47)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

詹金斯文件....

pipeline{

agent any

    stages{

        stage('Git clone project'){
            steps{
                git branch: 'sandbox',url:'https://<repo url>'
                sh 'git branch -a'
            }
         
        }

        stage('Test TMS'){
            steps{
                    dir('TestManagementService'){
                          sh 'pwd'
                          sh './gradlew test'
                          step(
                            jacoco(
                                execPattern: '**/build/jacoco/**.exec',
                                classPattern: '**/build/classes/java/main',
                                sourcePattern: '**/src',
                                inclusionPattern: 'com/testMgmt/**',
                                )
                          )
                    }
            }
            
            post{
                always{
                    junit '**/build/test-results/test/TEST-*.xml'
                }
            }
        }
       
    }// end of stages

}

问题是由于错误使用了包含 jacoco() 语句的 step() 语句。

用法不正确....

step(
        jacoco(
                 execPattern: '**/build/jacoco/**.exec',
                 classPattern: '**/build/classes/java/main',
                 sourcePattern: '**/src',
                 inclusionPattern: 'com/testMgmt/**',
               )
    )

正确用法(step() 不应该包含 jacoco() )....

        jacoco(
                 execPattern: '**/build/jacoco/**.exec',
                 classPattern: '**/build/classes/java/main',
                 sourcePattern: '**/src',
                 inclusionPattern: 'com/testMgmt/**',
               )