我可以从Gradle自定义任务中执行SonarQube吗? 我想将projectKey&Name动态设置为波纹管:
sonarqube {
properties {
property "sonar.host.url", "http://example.com:10009"
property "sonar.login", "ffabcdfa0e21dcdf039d4dd5d1d999997d930b270a"
property "sonar.sourceEncoding", "UTF-8"
// set dynamically
property "sonar.projectKey", "$project.ext.sonarqube_projectkey"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
property "sonar.projectName", "$project.ext.sonarqube_projectname"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
property "sonar.projectVersion", android.defaultConfig.versionName
property "sonar.projectBaseDir", "${rootDir}/../"
}
}
task run_sonarqube_A {
doFirst {
project.ext.sonarqube_projectkey = "key_foo_A"
^^^^^^^^^^^
project.ext.sonarqube_projectname= "name_foo_A"
^^^^^^^^^^^
}
doLast {
// how to execute sonarqube?
}
}
task run_sonarqube_B {
doFirst {
project.ext.sonarqube_projectkey = "key_foo_B"
^^^^^^^^^^^
project.ext.sonarqube_projectname= "name_foo_B"
^^^^^^^^^^^
}
doLast {
// how to execute sonarqube?
}
}
我尝试如下:
sonarqube.shouldRunAfter run_sonarqube_A
失败如下:
FAILURE: Build failed with an exception.
* Where:
Build file 'D:\project\99_system\foo\build.gradle' line: 212
* What went wrong:
A problem occurred evaluating project ':foo'.
> Could not find method shouldRunAfter() for arguments [task ':foo:run_sonarqube_A'] on object of type org.sonarqube.gradle.SonarQubeExtension.
是否可以通过自定义任务执行SonarQube?
如果我只运行“ gradlew run_sonarqube_A”,我想要的是自动执行声纳法。
答案 0 :(得分:0)
我不确定您想要实现什么。对我来说,您似乎只想执行SonarQube分析。通过使用SonarQube Gradle Plugin是可能的。 SonarScanner for Gradle上对此进行了说明。
您应该添加:
plugins {
id 'org.sonarqube' version '2.8'
}
删除所有sonar
属性和run_sonarqube
任务,然后执行:
gradle sonarqube -Dsonar.host.url=http://example.com:10009 -Dsonar.login=ffabcdfa0e21dcdf039d4dd5d1d999997d930b270a
这些属性:
是基于Gradle元数据归档的。例如,sonar.projectKey
等于group
,项目name
build.gradle
group = 'org.example'
settings.gradle
rootProject.name = 'project'
然后
sonar.projectKey=org.example:project
动态设置group
或name
没问题,因为它们是在Groovy脚本(build.gradle
和settings.gradle
)中定义的。