gradle构建_指定Gradle构建属性

gradle构建

属性是用于轻松自定义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文件,指定了指示的环境变量,并且仅显示了命令,输出看起来像在下一个屏幕快照中所示。

gradlePropertiesProjectSystemEnvironmentalVariable

屏幕快照指示了如何根据其来源和命名约定在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构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】国家开放大学2021春1439临床药理学题目

试卷代号&#xff1a;1439 2021年春季学期期末统一考试 临床药理学 试题 2021年7月 一、单项选择题&#xff08;选择一个最佳选项&#xff0c;每题2分&#xff0c;共80分&#xff09; 1.临床药理学研究的内容是&#xff08; &#xff09;。 A.临床药效学研究 B.临床药物代谢动力…

线性代数之——行列式及其性质

https://zhuanlan.zhihu.com/p/50912180

【渝粤题库】国家开放大学2021春1542投资学题目

试卷代号&#xff1a;1542 2021年春季学期期末统一考试 投资学 试题 2021年7月 一、名词配伍&#xff08;请将你认为的正确答案的字母填入该题后的括号内。每小题3分&#xff0c;共15分&#xff09; 1.长期投资&#xff08; &#xff09; 2.同业拆借市场&#xff08; &#xff…

Apache Commons ArrayUtils.toString(Object)与JDK Arrays.toString(Object)

Apache Commons Lang提供了一个ArrayUtils类&#xff0c;其中包含toString&#xff08;Object&#xff09;方法&#xff0c;该方法“将数组作为字符串输出”。 在本文中&#xff0c;我将研究当JDK提供Arrays.toString&#xff08;Object []&#xff09;方法[以及原始类型数组的…

【渝粤题库】国家开放大学2021春1340古代小说戏曲专题题目

试卷代号&#xff1a;1340 2021年春季学期期末统一考试 古代小说戏曲专题 试题&#xff08;开卷&#xff09; 2021年7月 一、选择题&#xff08;每题1分&#xff0c;共10分&#xff09; 1.长篇小说《海上花列传》在题材类型上属于&#xff08; &#xff09;。 A.历史演义小说 B…

Cauchy-Schwarz不等式

1. Cauchy不等式 ##2. 推广&#xff1a;HolderH\ddot{o}lderHolder不等式 3. Cauchy-Schwarz不等式 结论&#xff1a;任意两个向量的内积&#xff08;点乘&#xff09;的模平方&#xff0c;必定小于或等于这两个向量各自的模的乘积。 https://www.jianshu.com/p/77f9607d88d…

【渝粤题库】国家开放大学2021春1354高级英语阅读(2)题目

试卷代号&#xff1a;1354 2 0 2 1年春季学期期末统一考试 高级英语阅读(2) 试题 2021年7月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌子上。试卷和答题纸均不得带出考场。…

为Envoy构建控制平面的指南-特定于域的配置API

建立您的控制平面交互点和API表面 一旦仔细考虑了哪些组件可能构成控制平面体系结构&#xff08;请参见上一章&#xff09;&#xff0c;您将要确切考虑用户将如何与控制平面进行交互&#xff0c;甚至更重要的是&#xff0c; 用户将是谁&#xff1f; 要回答这个问题&#xff0c;…

StevenBoyd--Convex optimization--0. Contents-catalog

把自己最近学习的Steven Boyd的convex optimization的内容整理一下&#xff0c;将思维导图发出来供自己学习及参考。

【渝粤题库】国家开放大学2021春1366英语教学理论与实践题目

试卷代号&#xff1a;1366 2021年春季学期期末统一考试 英语教学理论与实践 试题 2021年7月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考…

spring安全_Spring安全–幕后

spring安全安全任务&#xff08;例如&#xff0c;用户身份验证和用户查看应用程序资源的授权&#xff09;通常由应用程序服务器处理。 可以将这些任务委托给Spring安全性流程&#xff0c;以减轻应用程序服务器处理这些任务的负担。 Spring安全性基本上通过实现标准javax.servle…

建筑商和机械手

这是在OOP中命名方法的简单原理&#xff0c;我尝试在我的代码中遵循&#xff1a; 操作时是动词 &#xff0c; 构建时是名词 。 而已。 两者之间什么都没有。 诸如saveFile()或getTitle()不适合使用&#xff0c;必须重命名和重构。 此外&#xff0c;“操作”的方法必须始终返回v…

【渝粤题库】国家开放大学2021春1376机械制造装备及设计题目

试卷代号&#xff1a;1376 2021年春季学期期末统一考试 机械制造装备及设计 试题 2021年7月 一、单项选择题&#xff08;从所给的四个选项中&#xff0c;找出你认为是正确的答案&#xff0c;将其编号填入括号内。每小题3分&#xff0c;共30分&#xff09; 1.卧式支承的机床重心…

【渝粤题库】国家开放大学2021春1398分析化学(本)题目

试卷代号&#xff1a;1398 2021年春季学期期末统一考试 分析化学&#xff08;本&#xff09; 试题&#xff08;开卷&#xff09; 2021年7月 一、单项选择题&#xff08;每题2分&#xff0c;共60分&#xff09; 1.下列叙述错误的是&#xff08; &#xff09;。 A.偶然误差影响分…

【渝粤题库】国家开放大学2021春1359高级英语写作题目

试卷代号&#xff1a;1359 2021年春季学期期末统一考试 高级英语写作 试题 2021年7月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完…

【渝粤题库】国家开放大学2021春1373特殊教育概论题目

试卷代号&#xff1a;1373 2021年春季学期期末统一考试 特殊教育概论 试题 2021年7月 一、解释下列概念题&#xff0c;并举例说明&#xff08;本题总分25分&#xff0c;每小题5分&#xff09; 1&#xff0e;特殊教育&#xff1a; 2&#xff0e;教育诊断&#xff1a; 3&#x…

串行内存消耗 并行内存_如何估算内存消耗?

串行内存消耗 并行内存这个故事可以追溯到至少十年之前&#xff0c;当时我第一次接触PHB时遇到一个问题&#xff1a;“在生产部署中&#xff0c;我们需要购买多大服务器”。 我们正在构建的新的&#xff0c;闪亮的系统距离生产开始还有9个月的时间&#xff0c;显然该公司已承诺…