自定义Gradle插件中的getVersion()始终未指定

自定义Gradle插件中的getVersion()始终未指定,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,有关 执行摘要:getVersion()在自定义gradle插件中返回“未指定” 我已经创建了一个定制的gradle插件,它将一些业务逻辑应用到我们的Android Studio/gradle构建中。每次我们构建CI时都会运行此插件 我希望插件能够打印出它的版本,在构建过程中,它的版本号与正在构建的Android应用程序的版本号完全不同。(CI生成期间有用的调试信息) 插件的build.gradle(作为jar部署到maven repo): 。。。该插件应用于Android应用程序,如下所示(

有关

执行摘要:getVersion()在自定义gradle插件中返回“未指定”

我已经创建了一个定制的gradle插件,它将一些业务逻辑应用到我们的Android Studio/gradle构建中。每次我们构建CI时都会运行此插件

我希望插件能够打印出它的版本,在构建过程中,它的版本号与正在构建的Android应用程序的版本号完全不同。(CI生成期间有用的调试信息)

插件的build.gradle(作为jar部署到maven repo):

。。。该插件应用于Android应用程序,如下所示(忽略敏感部分):

在插件中,我尝试按如下方式打印其版本:

@Override
    void apply(Project project) { 

        project.configure(project) {
            if (it.hasProperty("android")) {

                if (isJenkinsBuild()) { 
                    log("Plugin version: " + getVersion()) 

                    // ...
                }

                // ...
            }
        }
    }
。。但每当我执行Android应用程序的gradle构建时,它就会认为getVersion()未指定

在另一个gradle构建使用插件时,我应该做些什么来跟踪插件版本呢?

project.configure(project){println getVersion()}
println project.version
相同。如果打印
未指定
,则生成脚本未设置
(项目)版本

从Gradle 2.2开始,插件没有一种内置的方式来声明或查询它自己的版本,但是你可以自己(为你自己的插件)实现它。

project.configure(project){println getVersion()}
println project.version
相同。如果打印
未指定
,则生成脚本未设置
(项目)版本

从Gradle 2.2开始,插件没有一种内置的方式来声明或查询它自己的版本,但是你可以自己(为你自己的插件)实现它。

project.configure(project){println getVersion()}
println project.version
相同。如果打印
未指定
,则生成脚本未设置
(项目)版本

从Gradle 2.2开始,插件没有一种内置的方式来声明或查询它自己的版本,但是你可以自己(为你自己的插件)实现它。

project.configure(project){println getVersion()}
println project.version
相同。如果打印
未指定
,则生成脚本未设置
(项目)版本



从Gradle 2.2开始,插件没有一种内置的方式来声明或查询自己的版本,但您可以自己(为自己的插件)实现它。

getVersion()
获取当前正在执行的Gradle构建的版本,不是用于创建插件Jar的版本。@OliverCharlesworth如何获取用于创建插件Jar的版本?
getVersion()
获取当前正在执行的Gradle版本,不是用于创建插件Jar的版本。@OliverCharlesworth如何获取用于创建插件Jar的版本?
getVersion()
获取当前正在执行的Gradle版本,不是用于创建插件Jar的版本。@OliverCharlesworth如何获取用于创建插件Jar的版本?
getVersion()
获取当前正在执行的Gradle版本,不是用来创建插件Jar的版本。@OliverCharlesworth您如何获得用于创建插件Jar的版本?谢谢Peter,有没有关于如何跟踪和查询插件版本的建议?可能是JAR本身的一部分?您可以向插件JAR添加属性文件,或者在
MyPlugin\getVersion
方法中硬编码版本。清单呢?甚至还有一个用于读取它的API:。清单也可以工作。这可能比拥有自己的属性文件更难实现。谢谢Peter,关于如何跟踪和查询插件版本有什么建议吗?可能是JAR本身的一部分?您可以向插件JAR添加属性文件,或者在
MyPlugin\getVersion
方法中硬编码版本。清单呢?甚至还有一个用于读取它的API:。清单也可以工作。这可能比拥有自己的属性文件更难实现。谢谢Peter,关于如何跟踪和查询插件版本有什么建议吗?可能是JAR本身的一部分?您可以向插件JAR添加属性文件,或者在
MyPlugin\getVersion
方法中硬编码版本。清单呢?甚至还有一个用于读取它的API:。清单也可以工作。这可能比拥有自己的属性文件更难实现。谢谢Peter,关于如何跟踪和查询插件版本有什么建议吗?可能是JAR本身的一部分?您可以向插件JAR添加属性文件,或者在
MyPlugin\getVersion
方法中硬编码版本。清单呢?甚至还有一个用于读取它的API:。清单也可以工作。不过,这可能比拥有自己的属性文件更难实现。
buildscript {
    repositories {
        mavenCentral()
        maven {   url "../../../plugin_builds" }
    }
    dependencies {
        classpath 'com.example.foo.gradle:foo-gradle-jenkins:0.0.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'foo'


android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.example.android.examplegradleapplication3"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
@Override
    void apply(Project project) { 

        project.configure(project) {
            if (it.hasProperty("android")) {

                if (isJenkinsBuild()) { 
                    log("Plugin version: " + getVersion()) 

                    // ...
                }

                // ...
            }
        }
    }
AppExtension android = (AppExtension) project.extensions.findByName("android")
String versionName = android.defaultConfig.versionName
String versionCode = android.defaultConfig.versionCode