我正在创建一个gradle插件来应用sonar-runner插件,并默认了许多值,如sonar主机URL和sonar JDBC URL。但我不知道如何设置这些属性。
当我在build.gradle中设置时,我使用了。
apply plugin: 'sonar-runner'
sonarRunner {
sonarProperties {
property 'sonar.host.url', 'http://mySonar.company.com'
property 'sonar.jdbc.url', 'jdbc:mysql://127.0.0.1:1234/sonar'
}
}
我的gradle插件是这样的:
class MySonarPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.apply plugin: 'sonar-runner'
project.configurations {
sonarRunner {
sonarProperties {
property 'sonar.host.url', 'http://mySonar.company.com'
property 'sonar.jdbc.url', 'jdbc:mysql://127.0.0.1:1234/sonar'
}
}
}
}
}
这样设置后,我得到了一个 No signature of method
异常。我应该如何设置这些属性?
我发现我可以使用 project.getExtensions().sonarRunner.sonarProperties{ ... }
来设置声纳属性。请看下面的例子。
class MySonarPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.apply plugin:'sonar-runner'
project.getExtensions().sonarRunner.sonarProperties {
property 'sonar.host.url', 'http://mySonar.company.com'
property 'sonar.jdbc.url', 'jdbc:mysql://127.0.0.1:1234/sonar'
}
}
}
谢谢 @mikerylander 和 @ravikanth! 我也试过setProperty和.properties的解决方案,但它们对我来说并不奏效。
真正棘手的是,自动完成程序没有找到 "sonarqube "的部分。project.getExtensions().sonarqube.properties
对我来说,所以如果没有你的帖子,我从来没有得到这个解决方案。
我为一个多模块的Android项目写了一个自定义的Gradle插件来运行sonarqube,你的帖子帮助了我。 下面是我的完整的自定义插件。由于该插件被设计为包含在我的Android项目的任何子模块的build.gradle中,我预先添加了 "my_product"${project.path},但当然你可以在这里使用任何值。
下面是我完整的插件代码,如果对你有帮助的话。
package com.example.gradle.plugins
import org.gradle.api.Plugin
import org.gradle.api.Project
class MySonarCodeCoveragePlugin implements Plugin<Project> {
private Project project
void apply(Project project) {
this.project = project
project.apply plugin: 'org.sonarqube'
project.getExtensions().sonarqube.properties
{
property "sonar.sources", "${project.projectDir}/src/main"
property "sonar.organization", "my_org"
property "sonar.projectKey", "my_product${project.path}"
property "sonar.projectName", "my_product${project.path}"
property "sonar.coverage.jacoco.xmlReportPaths", "${project.buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"
property "sonar.scanner.metadataFilePath", "${project.buildDir}/sonar/report-task.txt"
}
}
}