Как получить доступ к версии проекта из выражений Gradle Kotlin DSL? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть скрипт сборки Gradle 5.3 с использованием Kotlin DSL, похожий на этот:

plugins {
    `kotlin-dsl`
    `java-library`
}

group = "my.company"
version = "1.2.3"

Здесь version= разрешается до org.gradle.api.Project.setVersion.

Теперь, дальше, я бы хотел сделать это (портирование из файла сборки Groovy DSL):

tasks.named<Jar>("jar") {
    manifest {
        attributes(
            "Product-Version" to version
        )
    }
}

Здесь version разрешается до AbstractArchiveTask.getVersion - не то, что я хочу (и также не рекомендуется)!

Подумав, я мог бы использовать квалификацию Котлина this, я пытался использовать

"${this@Project.version}"

вместо этого (NB: дополнительная перенос строки избавляет от дополнительной ошибки типа), но я получаю Unresolved reference: @Project сейчас.

Как получить доступ к версии проекта из выражения Kotlin DSL?

1 Ответ

0 голосов
/ 16 апреля 2019

Сценарий Gradle, кажется, не вложен в Project, но вместо этого делегирует средства доступа к его соответствующим свойствам. Фактически, верхний уровень this имеет тип Build_gradle.

Когда эти средства доступа затенены, можно использовать переменную project; то есть

project.version

решает проблему под рукой. В качестве альтернативы

this@Build_gradle.version

также допустим, но менее читабелен.

...