自定义gradle插件中的
执行摘要: getVersion()返回“未指定”
我创建了一个自定义gradle插件,它将一些业务逻辑应用于我们的Android Studio / Gradle构建。每次我们进行CI构建时都会运行此插件。
我希望该插件能够在构建期间打印出其版本,该版本与正在构建的Android应用程序的版本号完全不同。 (在CI构建期间有用的调试信息)
插件的build.gradle(作为jar部署到maven repo):
buildscript {
repositories {
mavenCentral()
}
}
apply plugin: 'groovy'
apply plugin: 'maven'
group = 'com.example.foo.gradle'
version = "0.0.12"
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
dependencies {
repositories {
mavenCentral()
}
compile gradleApi()
compile localGroovy()
}
configurations {
includeInJar
}
dependencies {
//testCompile 'junit:junit:4.11'
}
jar {
}
uploadArchives {
repositories.mavenDeployer {
def deployPath = file(getProperty('aar.deployPath'))
repository(url: "file://${deployPath.absolutePath}")
pom.project {
groupId project.group
artifactId 'foo-gradle-jenkins'
version project.version
}
}
}
...并且该插件应用于这样的Android应用程序(省略敏感部分):
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())
// ...
}
// ...
}
}
}
..但每当我执行Android应用程序的gradle构建时,它认为getVersion()未指定。
在使用它作为插件的另一个gradle构建时,我应该做什么来跟踪插件版本?
答案 0 :(得分:1)
project.configure(project) { println getVersion() }
与println project.version
相同。如果打印unspecified
,则构建脚本不会设置(project.)version
。
从Gradle 2.2开始,插件无法声明或查询自己的版本,但您可以自己实现(对于您自己的插件)。
答案 1 :(得分:0)
AppExtension android = (AppExtension) project.extensions.findByName("android")
String versionName = android.defaultConfig.versionName
String versionCode = android.defaultConfig.versionCode