Можно ли определить свойство для встроенной задачи Gradle? - PullRequest
0 голосов
/ 18 июня 2019

https://docs.gradle.org/current/userguide/more_about_tasks.html показывает пример того, как определить свойство задачи с помощью extends DefaultTask.

Можно напрямую определить свойство задачи с помощью встроенного синтаксиса определения задачи, например:

task collectSqlFiles {
    FileCollection sqlFiles
    doLast {
        sqlFiles = fileTree("$rootDir/function", sqlFilePatt) +
                 fileTree("$rootDir/maintenance", sqlFilePatt) +
                 fileTree("$rootDir/monitoring", sqlFilePatt) +
                 fileTree("$rootDir/view", sqlFilePatt)
    }
}

task printSqlFiles {
    dependsOn collectSqlFiles

    doLast {
        // Got:  Could not get unknown property 'sqlFiles' for task ':collectSqlFiles'
        // of type org.gradle.api.DefaultTask.
        collectSqlFiles.sqlFiles.forEach { logger.lifecycle("sqlFile: {}", it) }
    }
}

1 Ответ

0 голосов
/ 18 июня 2019

Кажется, что ExtensionAware Объекты домена Gradle изначально имеют расширение с именем «ext», равное ExtraPropertiesExtension .

Inline task равен DefaultTask и реализует ExtensionAware.

Итак, решение:

task collectSqlFiles {
    FileCollection sqlFiles
    doLast {
        // TAKE LOOK to "ext."
        ext.sqlFiles = fileTree("$rootDir/function", sqlFilePatt) +
                 fileTree("$rootDir/maintenance", sqlFilePatt) +
                 fileTree("$rootDir/monitoring", sqlFilePatt) +
                 fileTree("$rootDir/view", sqlFilePatt)
    }
}

task printSqlFiles {
    dependsOn collectSqlFiles

    doLast {
        collectSqlFiles.sqlFiles.forEach { logger.lifecycle("sqlFile: {}", it) }
    }
}

Взгляните на официальный Динамические свойства раздел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...