Gradle这篇文章就够用了06Property使用方式

编程

常用的property:内置

gradle有很多内置的属性,比如project和task相关的常见属性信息如下:

project的property

属性

说明

name

project的名称,可以在setting.xml中进行修改

description

项目描述,一般在build.gradle文件中设定

version

项目版本信息

parent

存在的情况下返回父项目信息

group

用户定义的项目分组信息

dependencies

项目依赖配置信息

repositories

项目配置库信息

defaultTasks

项目缺省运行的任务名称

buildDir

构建脚本(缺省状况下build.gradle)所在目录

buildFile

构建脚本名称(缺省状况下为build.gradle),可使用-b选项修改

task的property

属性

说明

name

task的名称

description

task的描述

group

设定任务的逻辑分组

enabled

设定任务enable或者是disable

dependson

设定dependencies的配置

其他内置属性

使用如下命令可以查看更多gradle的内置属性

gradle properties

内置属性设定方法

方式1: 直接设定

访问和设定内置属性,可以直接通过属性名进行设定,比如version,但是当出现可能的重名歧义时,通常需要使用限定内容对其歧义进行消除,比如description需要指定是task的description还是project的。

方式2: task的属性可以通过.configure方式定义

定义方式:在 task名称.configure{}中进行定义

格式:task名称.configure{ 属性名称 = 设定内容 }

而使用时直接使用定义中设定的属性名称即可

示例

  • 代码

orrincn:property orrin$ cat settings.gradle 

println "[Phase: initialization] : settings executed... "

rootProject.name="propertySample"

println "[default]:[rootProject.name] = " + rootProject.name

orrincn:property orrin$ cat build.gradle

println "[phase:configuration] build.gradle ..."

println "[phase:configuration] before setting [version] = " + version

task setDefaultProperty {

group "propertyTest"

description "set default property"

version = "alpha"

}

setDefaultProperty.configure {

description = "property using task.configure"

}

tasks.create("display") {

group "propertyTest"

description "display properties"

doFirst() {

println "[default]:[rootProject.name] = " + rootProject.name

println "[default]:[version] = " + version

println "[default]:[description] = " + description

println "[default/configure]:[setDefaultProperty.description] = " + setDefaultProperty.description

}

}

orrincn:property orrin$

  • 结果确认

orrincn:property orrin$ gradle display

[Phase: initialization] : settings executed...

[default]:[rootProject.name] = propertySample

> Configure project :

[phase:configuration] build.gradle ...

[phase:configuration] before setting [version] = unspecified

> Task :display

[default]:[rootProject.name] = propertySample

[default]:[version] = alpha

[default]:[description] = display properties

[default/configure]:[setDefaultProperty.description] = property using task.configure

BUILD SUCCESSFUL in 0s

1 actionable task: 1 executed

orrincn:property orrin$

注意:在Gradle 5中rootProject.name已经不再建议中间使用空格,所以上述的名称为propertySample。

自定义属性

gradle还提供了多种方式进行自定义属性

方式1: 通过ext进行自定义属性

普通方式定义:ext.属性名称 = 设定内容

或者使用

闭包方式定义: ext { 属性名称 = 设定内容 }

而使用时直接使用定义中设定的属性名称即可

  • 代码示例

ext {

extProperty1 = "perperty using ext closure"

}

ext.extProperty2 = "perperty using ext."

task displayExtProperties {

group "propertyTest"

description "display ext properties"

doFirst() {

println "[ext]:[extProperty1] = " + extProperty1

println "[ext]:[ext.extProperty2] = " + extProperty2

}

}

  • 执行确认

orrincn:property orrin$ gradle displayExtProperties

[Phase: initialization] : settings executed...

[default]:[rootProject.name] = propertySample

> Configure project :

[phase:configuration] build.gradle ...

[phase:configuration] before setting [version] = unspecified

> Task :displayExtProperties

[ext]:[extProperty1] = perperty using ext closure

[ext]:[ext.extProperty2] = perperty using ext.

BUILD SUCCESSFUL in 0s

1 actionable task: 1 executed

orrincn:property orrin$

方式2: 通过-P参数传入自定义属性

定义方式:使用gradle执行时使用-P参数,形式为:

-P 属性名称 = 设定内容

而使用时直接使用定义中设定的属性名称即可

  • 代码示例

task displayParaByP {

group "propertyTest"

description "display -P properties"

doFirst() {

println "[-P]:[pProperty1] = " + pProperty1

}

}

  • 执行确认

orrincn:property orrin$ gradle -P pProperty1="perperty using -P " displayParaByP

[Phase: initialization] : settings executed...

[default]:[rootProject.name] = propertySample

> Configure project :

[phase:configuration] build.gradle ...

[phase:configuration] before setting [version] = unspecified

> Task :displayParaByP

[-P]:[pProperty1] = perperty using -P

BUILD SUCCESSFUL in 0s

1 actionable task: 1 executed

orrincn:property orrin$

方式3: 通过环境变量设定自定义属性

gradle使用约定:环境变量以ORG_GRADLE_PROJECT_开头的,gradle会约定认为这是通过环境变量方式传入的属性名称。

定义方式:

export ORG_GRADLE_PROJECT_属性名称 = 设定内容

而使用时直接使用定义中设定的属性名称即可

  • 代码示例

task displayParaByENV {

group "propertyTest"

description "display ENV properties"

doFirst() {

println "[ENV]:[envProperty1] = " + envProperty1

}

}

  • 执行确认

orrincn:property orrin$ export ORG_GRADLE_PROJECT_envProperty1="property using ENV"

orrincn:property orrin$ gradle displayParaByENV

[Phase: initialization] : settings executed...

[default]:[rootProject.name] = propertySample

> Configure project :

[phase:configuration] build.gradle ...

[phase:configuration] before setting [version] = unspecified

> Task :displayParaByENV

[ENV]:[envProperty1] = property using ENV

BUILD SUCCESSFUL in 0s

1 actionable task: 1 executed

orrincn:property orrin$

方式4: 通过JVM的-D传入自定义属性

gradle使用约定:像环境变量的方式一样,使用JVM也需要gradle能够认出这是传入的属性名称,使用-D以org.gradle.project.开头的,gradle也会约定认为这是要传入的属性名称.

定义方式:

gradle -D org.gradle.project.属性名称 = 设定内容

而使用时直接使用定义中设定的属性名称即可

  • 代码示例

task displayParaByJVM {

group "propertyTest"

description "display JVM properties"

doFirst() {

println "[JVM]:[jvmProperty1] = " + jvmProperty1

}

}

  • 执行确认

orrincn:property orrin$ gradle -Dorg.gradle.project.jvmProperty1="property using JVM Param" displayParaByJVM

[Phase: initialization] : settings executed...

[default]:[rootProject.name] = propertySample

> Configure project :

[phase:configuration] build.gradle ...

[phase:configuration] before setting [version] = unspecified

> Task :displayParaByJVM

[JVM]:[jvmProperty1] = property using JVM Param

BUILD SUCCESSFUL in 0s

1 actionable task: 1 executed

orrincn:property orrin$

总结

虽然是非常简单的一个特性,Property作为参数传递的重要方式之一,在gradle中的使用也是非常地灵活的,比如使用环境变量或者JVM参数的方式都比较灵活,即使是在持续构建中的一个脚本的实现,也应该多考虑一下如何将定耦合等,在DevOps实践中,这些正是延伸了的设计需要考虑的地方。

以上是 Gradle这篇文章就够用了06Property使用方式 的全部内容, 来源链接: utcz.com/z/515154.html

回到顶部