如何在自定义Gradle插件中获取$ project.version? [英] How to Get $project.version in Custom Gradle Plugin?

查看:855
本文介绍了如何在自定义Gradle插件中获取$ project.version?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在定制gradle插件中, project.version 似乎总是未指定。为什么以及如何检索自定义插件(类)中的 project.version



例如:

  apply plugin:'java'
apply plugin:MyPlugin

version =1.0.0

println在构建文件:$ project.version

class MyPlugin implements Plugin< Project> {
public void apply(Project project){
project.task('myTask'){
printlnIn plugin:$ project.version
}
}

$ / code>

打印出来:

 <> code>%; gradle -q myTask 
在插件中:未指定
在构建文件中:1.0.0



<

解决方案

您在调用<$ c $之后设置属性c> apply



如果您移动

  version =1.0.0

到行前

  apply plugin:MyPlugin 

它应该工作

编辑



在Peter的答案之后,你可以看到这也适用于:

  apply plugin:'java'
apply plugin:MyPlugin

version =1.0.0

println在构建文件中:$ project.version

class MyPlugin实现插件< Project> {
public void apply(Project project){
project.task('myTask'){
project.gradle.projectsEvaluated {
printlnIn plugin:$ project.version
}
}
}
}

延迟对 $ project.version 的评估,直到构建完成评估为止。

Within a custom gradle plugin the project.version seems to always be unspecified. Why and how to retrieve the project.version within a custom plugin (class)?

For Example:

apply plugin: 'java'
apply plugin: MyPlugin

version = "1.0.0"

println "In build file: $project.version" 

class MyPlugin implements Plugin<Project> {
  public void apply(Project project) {
    project.task('myTask') {
      println "In plugin: $project.version"
    }
  }
}

Prints out:

%> gradle -q myTask
  In plugin: unspecified
  In build file: 1.0.0

Besides the how I really would like to know the why?

解决方案

You set the property after you call apply

If you move

version = "1.0.0"

To before the line

apply plugin: MyPlugin

It should work

Edit

Following Peter's answer, you can see that this works also:

apply plugin: 'java'
apply plugin: MyPlugin

version = "1.0.0"

println "In build file: $project.version" 

class MyPlugin implements Plugin<Project> {
  public void apply(Project project) {
    project.task('myTask') {
      project.gradle.projectsEvaluated { 
        println "In plugin: $project.version"
      }
    }
  }
}

To delay the evaluation of $project.version until evaluation of the build is complete

这篇关于如何在自定义Gradle插件中获取$ project.version?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆