我想实现一个 gradle 插件来改变 project.version
根据插件的配置再使用修改后的project.version
配置另一个 gradle 插件,例如用于构建容器。现在的问题是同时评估两种配置,因此对 project.version
的更改在配置第二个插件时未应用。
我搜索了 Gradle 文档,但没有发现任何关于我的问题。
构建.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
但我认为这是不可能的。我希望有人能指出我正确的方向。谢谢!
最佳答案
移动version
的定义来自 containerPlugin
阻止插件定义:
class ContainerPlugin implements Plugin<Project> {
void apply(Project project) {
def extension = project.extensions.create('containerPlugin', ContainerPluginExtension)
project.afterEvaluate {
extension.version = project.version
}
project.task('build') {
doLast {
println "${extension.version}"
}
}
}
}
结果 :
$ gradle build
> Task :build
1.1.1
关于gradle - 使用 gradle plugin 配置另一个 gradle 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55378779/