Я хочу реализовать плагин Gradle, который изменяет project.version
в соответствии с конфигурацией плагина, а затем использует измененный project.version
для настройки другого плагина Gradle, например, для построения контейнеров.Проблема состоит в том, что обе конфигурации оцениваются одновременно, и поэтому изменения в project.version
не применяются во время настройки второго плагина.
Я ищу документацию Gradle, но ничего не нашел относительно моей проблемы.
build.gradle
class VersionPluginExtension {
String major
String minor
String patch
}
class VersionPlugin implements Plugin<Project> {
void apply(Project project) {
def extension = project.extensions.create('versionPlugin', VersionPluginExtension)
project.afterEvaluate {
project.version = "${extension.major}.${extension.minor}.${extension.patch}"
}
project.task('showVersion') {
doLast {
println "${project.version}"
}
}
}
}
class ContainerPluginExtension {
String version
}
class ContainerPlugin implements Plugin<Project> {
void apply(Project project) {
def extension = project.extensions.create('containerPlugin', ContainerPluginExtension)
project.task('build') {
doLast {
println "${extension.version}"
}
}
}
}
apply plugin: VersionPlugin
apply plugin: ContainerPlugin
versionPlugin {
major = '1'
minor = '1'
patch = '1'
}
containerPlugin {
version = project.version
}
Я ожидаю, что сборка задачи вернет 1.1.1
, а не unspecified
, но я думаю, что это невозможно.Я надеюсь, что кто-то может направить меня в правильном направлении.
Спасибо!