【发布时间】:2019-03-27 13:46:39
【问题描述】:
我想实现一个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,但我认为这是不可能的。我希望有人能指出我正确的方向。
谢谢!
【问题讨论】:
标签: gradle groovy kotlin gradle-plugin