Gradle:如何从自定义插件设置版本
我已经编写了一个自定义插件(我的第一个插件),它管理一个“build number”,我想将其包含在build.gradle“version”中,如下所示: 不幸的是,我的插件从未运行过,因此返回的buildNumber为“null” 下面是我的身材 如果我运行“gradle showbuild”,我会看到正确的buildNumber 如果我运行“gradle showInfo”,则报告的内部版本号为“null” 不知何故,我需要让gradle在所有项目中设置“版本”值之前调用我的插件任务“buildInfoLoad”。自从我认识格拉德尔以来,我一直在努力解决这个问题 任何指点都将不胜感激Gradle:如何从自定义插件设置版本,gradle,gradle-plugin,Gradle,Gradle Plugin,我已经编写了一个自定义插件(我的第一个插件),它管理一个“build number”,我想将其包含在build.gradle“version”中,如下所示: 不幸的是,我的插件从未运行过,因此返回的buildNumber为“null” 下面是我的身材 如果我运行“gradle showbuild”,我会看到正确的buildNumber 如果我运行“gradle showInfo”,则报告的内部版本号为“null” 不知何故,我需要让gradle在所有项目中设置“版本”值之前调用我的插件任务“bu
buildscript {
repositories {
maven {
// Access to MangoGrove
url uri('../repo')
}
maven { // aka "jcenter()"
url "https://jcenter.bintray.com"
}
}
dependencies {
// Provide the "provided" and "optional" methods for dependencies
classpath 'com.netflix.nebula:gradle-extra-configurations-plugin:3.0.3'
classpath group: 'org.mangogrove.gradle',
name: 'MangoGrove',
version: '1.0.0-SNAPSHOT'
}
}
apply plugin: 'org.mangogrove.gradle'
task showbuild(dependsOn: 'buildInfoLoad') << {
println("BI build number: $buildinfo.buildNumber")
println("BI build time: $buildinfo.buildTime")
}
task createbuild(dependsOn: 'buildInfoCreate') << {
println("BI build number: $buildinfo.buildNumber")
println("BI build time: $buildinfo.buildTime")
}
allprojects {
ext {
buildNumber = "$buildinfo.buildNumber"
}
version = "1.0.0.${buildNumber}-alpha2"
//version = "1.0.0.${buildinfo.buildNumber}-alpha2"
apply plugin: 'eclipse'
eclipse {
classpath {
downloadSources=true
//downloadJavadoc=true
}
}
}
task showInfo << {
println("Product Version is $version")
println("Product BuildNumber is $buildNumber")
}
buildscript{
存储库{
马文{
//进入芒果林
url uri('../repo')
}
maven{//aka“jcenter()”
url“https://jcenter.bintray.com"
}
}
依赖关系{
//为依赖项提供“提供”和“可选”方法
classpath'com.netflix.nebula:gradle额外配置插件:3.0.3'
类路径组:“org.mangogrove.gradle”,
名称:'芒果林',
版本:“1.0.0-SNAPSHOT”
}
}
应用插件:“org.mangogrove.gradle”
任务showbuild(dependsOn:'buildInfoLoad')插件中的哪个任务生成了版本号?如果您的代码位于github之类的公共repo上,您可以将其链接到“buildInfoLoad”任务加载buildinfo.buildNumber和buildinfo.buildTime值。您的插件是否具有应用函数?是的,我的插件调用apply()。如果运行“gradle showbuild”或“gradle createbuild”,插件本身工作正常。问题是,当我将项目设置为“版本”时,插件任务“buildInfoLoad”还没有被调用。因此$buildinfo.buildNumber尚未设置。那么,在我设置“version=”1.2.3.${buildinfo.buildNumber}之前,我如何告诉gradle运行我的“buildInfoLoad”任务呢?我询问关于apply的问题,因为,您如何在apply()函数中设置您的构建编号?apply发生在应用插件时,我相信这是构建生命周期的早期,当然是在您运行任何其他任务之前。
buildscript {
repositories {
maven {
// Access to MangoGrove
url uri('../repo')
}
maven { // aka "jcenter()"
url "https://jcenter.bintray.com"
}
}
dependencies {
// Provide the "provided" and "optional" methods for dependencies
classpath 'com.netflix.nebula:gradle-extra-configurations-plugin:3.0.3'
classpath group: 'org.mangogrove.gradle',
name: 'MangoGrove',
version: '1.0.0-SNAPSHOT'
}
}
apply plugin: 'org.mangogrove.gradle'
task showbuild(dependsOn: 'buildInfoLoad') << {
println("BI build number: $buildinfo.buildNumber")
println("BI build time: $buildinfo.buildTime")
}
task createbuild(dependsOn: 'buildInfoCreate') << {
println("BI build number: $buildinfo.buildNumber")
println("BI build time: $buildinfo.buildTime")
}
allprojects {
ext {
buildNumber = "$buildinfo.buildNumber"
}
version = "1.0.0.${buildNumber}-alpha2"
//version = "1.0.0.${buildinfo.buildNumber}-alpha2"
apply plugin: 'eclipse'
eclipse {
classpath {
downloadSources=true
//downloadJavadoc=true
}
}
}
task showInfo << {
println("Product Version is $version")
println("Product BuildNumber is $buildNumber")
}