属性是用于轻松自定义Gradle构建和Gradle环境的宝贵工具。 我将在本文中演示一些用于指定Gradle构建中使用的属性的方法。

Gradle支持项目属性系统属性 。 这篇文章中有趣的是两者之间的主要区别是如何访问它们。 通过常规Java / Groovy系统属性访问方法访问系统属性时,项目属性更有助于按名称直接访问。

使用-P从命令行传递项目属性

将属性传递到Gradle构建的最简单方法之一是在命令行中使用-P指定项目属性。 使用-P传递给构建的属性可以在构建中作为项目属性轻松访问,并且如果其命名结构允许,则可以像变量一样直接访问。

使用-D从命令行传递系统属性

与其他Java应用程序一样,可以使用-D将系统属性传递给Gradle构建。 尽管通过-D选项提供给Gradle构建的这些系统属性始终可以通过用于获取系统属性的常规Java机制提供给Gradle构建,但是Gradle可以将Project Properties指定为系统属性。 这是通过放置前缀org.gradle.project.来完成的org.gradle.project. 在生成所需属性名称之前。 例如,如果要使用-D指定一个名为name.first的系统属性,该属性可以供Gradle构建使用,就像它由-P提供一样,则该人可以在命令行上将其作为org.gradle.project. name.first提供给Gradle构建org.gradle.project. name.first org.gradle.project. name.first和Gradle构建会将其视为名为name.first的项目属性。

通过环境变量传递系统属性

任何Java或Groovy应用程序(包括Gradle构建)都可以通过System.getenv(String)访问环境变量。 但是,如果环境变量以ORG_GRADLE_PROJECT_为前缀,则Gradle允许像其他项目属性一样在构建中访问环境变量。 例如,如果某人想要在Gradle构建name.last项目属性命名为name.last并想通过环境变量将其提供给构建,则该人可以声明环境变量ORG_GRADLE_PROJECT_name.last并且其值可用于Gradle作为名称为name.last的项目属性进行name.last

gradle.properties

也可以通过名为gradle.properties的属性文件将属性提供给Gradle构建。 用systemProp.指定的任何属性systemProp. 其属性名称的开头被视为Gradle构建中的系统属性,而其他属性(其名称以“ systemProp。开头”)则被视为Gradle项目属性。 例如,如果我的gradle.properties文件具有属性name.last=Marx和属性name.last=Marx systemPropr.name.first=Dustinname.last在Gradle构建中看到并访问name.last属性,就像该name.first任何项目属性一样name.first像任何系统属性一样, name.first属性将在Gradle构建中被看到和访问。

示范/范例

每种类型的属性指定机制都可以通过一个简单的示例进行演示。 接下来显示的Gradle构建会尝试打印以不同方式指定的各种属性。

build-properties.gradle

task displayProperties << {displaySystemProperties()displayGradleProjectProperties()
}def displaySystemProperties()
{println "\n=== System Properties ==="println "Favorite Movie (1994): ${System.properties['movie.favorite.1994']}"println "Favorite Movie (1996): ${System.properties['movie.favorite.1996']}" println "Favorite Movie (1997): ${System.properties['movie.favorite.1997']}"println "Favorite Movie (1981): ${System.properties['movie.favorite.1981']}"println "Favorite Movie (2012): ${System.properties['movie.favorite.2012']}"println "Favorite Movie (2013): ${System.properties['movie.favorite.2013']}"
}def displayGradleProjectProperties()
{println "\n=== Gradle Project Properties ==="println "Favorite Movie (1994): ${getProjectProperty('movie.favorite.1994')}"println "Favorite Movie (1996): ${getProjectProperty('movie.favorite.1996')}"println "Favorite Movie (1997): ${getProjectProperty('movie.favorite.1997')}"println "Favorite Movie (1981): ${getProjectProperty('movie.favorite.1981')}"println "Favorite Movie (2012): ${getProjectProperty('movie.favorite.2012')}"println "Favorite Movie (2013): ${getProjectProperty('movie.favorite.2013')}"
}def String getProjectProperty(String propertyName)
{String movieTitle = "null"if (hasProperty(propertyName)){movieTitle = this.properties[propertyName]}return movieTitle
}

传递给此脚本的某些属性将在命令行中用-P ,一些属性在命令行中用-D ,一个将通过环境变量提供,而两个将通过gradle.properties提供gradle.properties文件与构建文件位于同一目录中。 接下来显示该gradle.properties文件。

gradle.properties

movie.favorite.2013=Star Trek into Darkness
systemProp.movie.favorite.2012=Skyfall

放置好gradle.properties文件后,该示例的其他两个有趣的部分是环境变量的设置。 此处的示例是在DOS中进行的,但是在Linux环境中,可以使用稍有不同的语法来完成同一件事。 DOS / Windows命令是: set ORG_GRADLE_PROJECT.movie.favorite.1981="Raiders of the Lost Ark"

对于此演示,我将使用-D-P参数运行Gradle构建脚本: gradle -b build-properties.gradle displayProperties -Pmovie.favorite.1996="Independence Day" -Dmovie.favorite.1997=Gattaca -Dorg.gradle.project.movie.favorite.1994="Shawshank Redemption"

当在上面列出的Gradle构建脚本中运行并带有指定的gradle.properties文件,指定了指定的环境变量,并且仅显示了命令时,输出看起来像在下一个屏幕快照中所示。

屏幕快照指示了如何根据其来源和命名约定在Gradle构建中查看/访问属性。 简而言之,输出显示了在Gradle构建中属性可用性的以下“规则”:

  • 命令行-P属性是“项目属性”
  • 命令行-D属性是“系统属性”,但有一个例外
  • org.gradle.project.开头的命令行-D属性org.gradle.project. 是“项目属性”
  • 除了一个例外,在gradle.properties中指定的gradle.properties是“项目属性”
  • gradle.properties中指定的以gradle.properties开头的属性systemProp. 是“系统属性”
  • 除了一个例外,通过环境变量指定的属性是“系统属性”
  • 通过以ORG_GRADLE_PROJECT_开头的环境变量指定的属性是“项目属性”

结论

Gradle提供了多种方法来指定可用于自定义Gradle构建的属性。

参考:在Inspired by Actual Events博客上,从我们的JCG合作伙伴 Dustin Marx 指定Gradle构建属性 。

翻译自: https://www.javacodegeeks.com/2014/01/specifying-gradle-build-properties.html

指定Gradle构建属性相关推荐

  1. gradle构建_指定Gradle构建属性

    gradle构建 属性是用于轻松自定义Gradle构建和Gradle环境的宝贵工具. 我将在本文中演示一些用于指定Gradle构建中使用的属性的方法. Gradle支持项目属性和系统属性 . 这篇文章 ...

  2. 【Groovy】构建工具 ( 构建工具引入 | Gradle 构建工具作用 | 传统的依赖管理 )

    文章目录 一.构建工具引入 二.Gradle 构建工具作用 三.传统的依赖管理 一.构建工具引入 构建工具 用于 管理代码项目的 依赖 , 编译 , 测试 , 发布 周期 ; 常见的构建工具 : An ...

  3. Android Gradle 学习笔记(四):Gradle 构建脚本

    本节我们从整体的角度来介绍一下Gradle. 一.setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认的名字就是setting.gradle, ...

  4. Gradle构建工具的学习与使用

    http://my.eoe.cn/william_sim/archive/10691.html Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动 ...

  5. [Gradle] 在 Eclipse 下利用 gradle 构建系统

    构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...

  6. Gradle接口:Gradle构建元数据

    正如我之前在" 识别Gradle约定 "和" 从Ant Build演变Gradle构建:导入Ant构建文件 "之类的文章中所显示的那样,可以通过Groovy访问 ...

  7. 使用Gradle构建Java项目

    使用Gradle构建Java项目 本指南将引导您使用Gradle构建一个简单的Java项目. 你会建立什么 您将创建一个简单的应用程序,然后使用Gradle进行构建. 你需要什么 约15分钟 最喜欢的 ...

  8. 实战Spring Boot 2.0系列(一) - 使用Gradle构建Docker镜像

    前言 通常我们使用 Dockerfile 来构建项目的 Docker 镜像.但是也有使用 gradle 在编译项目的时候一起把镜像给 构建 并 上传 的需求.本文将会讲解如何使用 gradle 编写并 ...

  9. gradle构建java实例_Gradle构建Java应用程序

    文章摘要 1.运行init,创建 2.执行创建 3.运行应用程序 一.运行init任务 要运行该init任务,请从命令提示符运行以下命令: $ gradle init --type name来自如下: ...

最新文章

  1. Blender着色器纹理材质创作教程含源文件 Shader Forge
  2. oracle9i的全局变量,Oracle9i, 10g 如何抓取绑定变量的值
  3. C#通过Array.Clear部分清除数组的代码
  4. Atitit 图像扫描器---基于扫描线
  5. tf.Variable 和 tf.get_variable的区别(2)
  6. Jquery调用C#后台方法
  7. 这个世界上不存在什么弯道超车,只存在正道超车
  8. docker 容器 exited_docker常用命令整理
  9. PyTorch中的生成对抗网络(GAN)
  10. java输入输出流详解_Java输入输出流详解
  11. 极坐标xy的转换_极坐标与直角坐标的转化
  12. 读懂以太坊的客户端多样性,为何如此重要?
  13. MyDiskTest硬盘检测绿色版
  14. python常用单词读法-Python常用单词
  15. LeetCode——线段树
  16. 机器学习笔记--神经网络--Rosenblatt
  17. eclipse安装教程和jdk配置(win超详细)
  18. 华为服务器gpu卡型号,gpu服务器 华为云
  19. 你见过最心酸的事是什么?
  20. 用户使用手册编写方法

热门文章

  1. linux的for循环怎么写,Linux命令:for循环写法总结
  2. mysql加索引快很多
  3. 第2步 安装git 配置git用户 git的安装和项目的建立
  4. datatable中某一列最小值_获取DataTable 某一列所有值
  5. mybatis-启动源码分析
  6. idea2021部署maven+javaweb项目到jboss(diy)
  7. mysql error 1045 的解决方法
  8. 正则表达式总结之查找
  9. api restful_HATEOAS的RESTful服务。 记录超媒体API
  10. java每个阶段的学习时间_每个Java学习者都会犯的10个最常见的1个错误