如何避免在配置阶段运行gradle任务并使其在执行阶段运行

时间:2018-01-30 09:34:25

标签: gradle build.gradle gradlew

我正在写下面提到的两个依赖的任务,但两个都在应用程序构建时运行。我试图避免,代码就像这样

// Get the coverage from sonar qube server for current branch
task getCoverageReport {
        def headers = [Accept: 'application/json']
        def resourcesId = getProjectResourceId()

        if (resourcesId != null) {
            def jsonText = new URL("(sonar instance)/api/resources?metrics=coverage,test_success_density&resource=" + resourcesId)
                    .getText(requestProperties: headers)
            def parsedJson = new JsonSlurper().parseText(jsonText)
            if (null != parsedJson) {
                codeCoverage = parsedJson.msr.get(0).get(0).frmt_val
                testCoverage = parsedJson.msr.get(0).get(1).frmt_val
            }
        }
    }


 confluence {

            tasks.findByName("confluence").doFirst {getCoverageReport}

            String confluenceUser = XXXXX
            String confluencePassword = XXXXXX

            authentication new String(confluenceUser + ":" + 
            confluencePassword).bytes.encodeBase64().toString()
            restApiUrl 'some uri'
            spaceKey 'XXXX'
            sslTrustAll true
            pageVariables = ['project.name'   : project.name,
                             'release.version': someversion,
                             'codeCoverage'   : codeCoverage,
                             'testCoverage'   : testCoverage
           ]

            pages {
              page {
                parentTitle 'page title'
                title "title" + project.getProperties().get('version')
                srcFile file('some file location')
                labels = ['Release Report']
              }
            }
          }

如果发现我正试图在getCoverageReport任务中先调用confluence。 问题是这两个任务在应用程序构建时运行,即当我以gradlew build运行命令时。

我查看了文档,并且在配置阶段运行任务,而不是在执行阶段我应该如何处理它?在执行阶段运行它们。

如果我尝试将getCoverageReport代码放在doFirst子句中,并运行gradlew confluence那么它就不会运行getCoverageReport

任何帮助都将受到高度赞赏。

0 个答案:

没有答案