gpt4 book ai didi

android - Gradle:创建一个将参数作为命令行传递的任务

转载 作者:行者123 更新时间:2023-12-03 03:17:08 25 4
gpt4 key购买 nike

我手动运行以下任务:

./gradlew clean jacocoTestReportFree sonarqube -Pflavor=free
./gradlew clean jacocoTestReportPaid sonarqube -Pflavor=paid

现在,我想创建一个新任务来启动它们。这是代码。
apply plugin: 'org.sonarqube'
//SonarQube configuration.
sonarqube {
def flavorName = ''
if (project.hasProperty('flavor')) {
//read the flavor from properties.
flavorName = flavor
androidVariant flavorName + "Debug"
} else {
androidVariant 'debug'
}
properties {
property 'sonar.host.url', 'http://localhost:9000'
property "sonar.projectName", "Java Example " + flavorName
property "sonar.projectKey", "jonceski.kliment.jacococoverageexample." + flavorName
property 'sonar.java.source', '8'
property 'sonar.sourceEncoding', 'UTF-8'
property "sonar.language", "java"
property "sonar.login", "admin"
property "sonar.password", "admin"

property 'sonar.java.binaries', 'build/intermediates/classes/' + flavorName + "/debug"
property 'sonar.java.test.binaries', 'build/intermediates/classes/' + flavorName + "/debug"
property 'sonar.junit.reportsPath', 'build/test-results/test' + flavorName.capitalize() +'DebugUnitTest'
property 'sonar.jacoco.reportPath', fileTree(dir: project.projectDir, includes: ['**/*.exec'])
property 'sonar.jacoco.itReportPath', fileTree(dir: project.projectDir, includes: ['**/*.ec'])
property 'sonar.java.coveragePlugin', 'jacoco'
property 'sonar.exclusions', '**/*.js,**/*.css,**/*.html'
}
}

这是我尝试没有成功的尝试。
task coverageFlavorFree {
doFirst {
clean
}
doLast {
jacocoTestReportFree
sonarqube(flavor="free")
}
}

最佳答案

在gradle中,您不应该只调用其他任务。做这些事情的正确方法是为每种口味创建任务并声明其依赖性。

这是一个完整的工作示例:

plugins {
id "org.sonarqube" version "2.7"
}
apply plugin: 'com.android.application'


android {
compileSdkVersion 28


defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

flavorDimensions 'version'

productFlavors {
professional {
dimension 'version'
}
free {
dimension 'version'
}
}
}

sonarqube {
}

task SonarQubeAll(group: 'SonarQube') {

}

android.applicationVariants.all { flavor ->
task("${flavor.name}SonarQube", group: 'SonarQube') {
description = 'Sets the sonarqube configuration'
finalizedBy 'sonarqube'
SonarQubeAll.dependsOn("${flavor.name}SonarQube")

doLast {
println("Setting flavor to ${flavor.name} for ${project.sonarqube.androidVariant}")
project.sonarqube.androidVariant = flavor.name
//TODO: Set other flavor dependent sonarqube properties here
// using project.sonarqube.properties...
}
}
}

这将为每种口味生成一个名为 {flavor}SonarQube的任务,以及一个名为 SonarQubeAll的根任务。每个 flavor 任务将通过实际的声纳任务完成。根任务会将所有其他任务作为依赖项,从而使它们全部执行。

这是依赖关系图:
:myapplication:SonarQubeAll
+--- :myapplication:freeDebugSonarQube
+--- :myapplication:freeReleaseSonarQube
+--- :myapplication:professionalDebugSonarQube
\--- :myapplication:professionalReleaseSonarQube

关于android - Gradle:创建一个将参数作为命令行传递的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61306466/

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