Как установить свойства задачи в плагине 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"
                }
    }
}
Другие вопросы по тегам