Как установить свойства задачи в плагине Gradle
Я создаю подключаемый модуль Gradle для применения подключаемого модуля Sonar-Runner и установки по умолчанию многих значений, таких как URL хоста сонара и URL JDBC сонара. Я не могу понять, как установить свойства, хотя.
Когда я настраиваю это в 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
исключение. Как мне установить эти свойства?
1 ответ
Я обнаружил, что могу использовать 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
для меня, так что я никогда не добрался до этого решения без вашего сообщения.
Я написал собственный плагин Gradle для запуска sonarqube для многомодульного проекта Android, и ваш пост мне помог. Ниже мой полный настраиваемый плагин. Поскольку плагин предназначен для включения в build.gradle любого подмодуля моего проекта Android, я добавил "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"
}
}
}