Gradle——构建环境

构建环境

目录

一、通过gradle.properties配置构建环境

二、Gradle属性和系统属性

三、通过代理访问web

一、通过gradle.properties配置构建环境

Gradle提供了几个选项,可以轻松配置将用于执行构建的Java进程。 虽然可以通过GRADLE_OPTS或JAVA_OPTS在本地环境中配置它们,但是如果可以使用VCS中的项目对某些设置(如JVM内存设置,Java home,守护程序开/关)进行版本控制,那么整个团队都可以 工作与一致的环境。 为您的构建设置一致的环境与将这些设置放在gradle.properties文件中一样简单。 配置按以下顺序应用(如果在多个位置配置了最后一个选项的选项):

· 从项目构建目录中的gradle.properties。

· 位于gradle.properties的gradle.properties。

· 从系统属性,例如 当在命令行上设置-Dsome.property时。

设置这些属性时,您应该记住,Gradle需要运行Java 7或更高版本的Java JDK或JRE。

扫描二维码关注公众号,回复: 5837365 查看本文章

以下属性可用于配置Gradle构建环境:

org.gradle.daemon

当设置为true时,Gradle守护程序用于运行构建。 对于本地开发人员构建,这是我们最喜欢的财产。 开发环境针对速度和反馈进行了优化,因此我们几乎总是使用守护进程运行Gradle作业。 由于CI环境针对一致性和可靠性进行了优化,因此我们不会随守护进程运行CI构建(即长时间运行的进程)。

org.gradle.java.home

指定Gradle构建过程的Java home。 该值可以设置为jdk或jre位置,但是,根据构建的内容,jdk更安全。 如果设置未指定,则使用合理的默认值。org.gradle.jvmargs

指定用于守护程序进程的jvmargs。 该设置对于调整内存设置特别有用。 目前的默认设置对于内存来说非常慷慨。

org.gradle.configureondemand

启用新的孵化模式,使Gradle在配置项目时具有选择性。 只有相关项目被配置,导致大型多项目的构建速度更快。

org.gradle.parallel

配置时,Gradle将以孵化并行模式运行。

org.gradle.workers.max

配置时,Gradle将使用给定数量的工作人员的最大值。 有关详细信息,请参见–max-workers。

org.gradle.logging.level

当设置为安静,警告,生命周期,信息或调试时,Gradle将使用此日志级别。 值不区分大小写。 请参见第24.1节“选择日志级别”。

org.gradle.debug

当设置为true时,Gradle将运行构建,启用远程调试,侦听端口5005.请注意,这相当于添加-agentlib:jdwp = transport = dt_socket,server = y,suspend = y,address = 5005 to the JVM命令行,并将挂起虚拟机,直到连接调试器。

org.gradle.daemon.performance.enable-monitoring

当设置为false时,Gradle将不会监视正在运行的守护程序的内存使用情况。 org.gradle.caching

当设置为true时,Gradle将尝试重用以前版本的输出。

1.1 叉式Java进程

只有在为构建过程启动新的JVM时,才能指定许多设置(如Java版本和最大堆大小)。 这意味着Gradle必须在分析各种gradle.properties文件后启动单独的JVM进程来执行构建。 使用守护程序运行时,将启动具有正确参数的JVM一次,并为每个守护程序构建执行重新使用。 当没有守护进程执行Gradle时,必须为每个构建执行启动一个新的JVM,除非由Gradle启动脚本启动的JVM具有相同的参数。

在每个构建执行中启动额外的JVM是相当昂贵的,这就是为什么如果要设置org.gradle.java.home或org.gradle.jvmargs,我们强烈建议您使用Gradle守护进程。

二、Gradle属性和系统属性

Gradle提供了多种添加属性到构建的方法。 使用-D命令行选项,您可以将系统属性传递给运行Gradle的JVM。 gradle命令的-D选项与java命令的-D选项具有相同的效果。

你还可以使用属性文件向项目对象添加属性。 您可以将Gradle.properties文件放在Gradle用户主目录中(由“GRADLE_USER_HOME”环境变量定义,如果未设置为默认为USER_HOME / .gradle)或项目目录中。 对于多项目构建,您可以将gradle.properties文件放在任何子项目目录中。 可以通过项目对象访问gradle.properties文件中设置的属性。 用户主目录中的属性文件优先于项目目录中的属性文件。

你还可以通过-P命令行选项将属性直接添加到项目对象。

当查看特定系统属性或环境变量时,Gradle还可以设置项目属性。 当您对持续集成服务器没有管理员权限时,此功能非常有用,并且您需要设置不应该容易看到的属性值,这通常是出于安全考虑。 在这种情况下,您不能使用-P选项,您不能更改系统级配置文件。 正确的策略是更改持续集成构建作业的配置,添加与预期模式匹配的环境变量设置。 对于系统上的普通用户来说,这是不可见的。

如果环境变量名称看起来像ORG_GRADLE_PROJECT_prop = somevalue,那么Gradle将在您的项目对象上设置一个prop属性,其值为somevalue。 Gradle还支持这个系统属性,但是使用不同的命名模式,其类似于org.gradle.project.prop。

您还可以在gradle.properties文件中设置系统属性。 如果这样的文件中的属性名称具有前缀“systemProp”,就像“systemProp.propName”一样,那么属性及其值将被设置为系统属性,不带前缀。 在多项目构建中,除root之外的任何项目中设置的“systemProp”属性将被忽略。 也就是说,只有根项目的gradle.properties文件将被检查以“systemProp。”前缀开头的属性。例12.1使用gradle.properties文件设置属性

gradle.properties

gradlePropertiesProp=gradlePropertiesValue

sysProp=shouldBeOverWrittenBySysProp

envProjectProp=shouldBeOverWrittenByEnvProp

systemProp.system=systemValue

build.gradle

task printProps {

doLast {

println commandLineProjectProp

println gradlePropertiesProp

println systemProjectProp

println envProjectProp

println System.properties[‘system’]

}

}

gradle 的输出-PcommandLineProjectProp=commandLineProjectPropValue -Dorg.gradle.project.systemProjectProp=systemPropertyValue printProps

gradle -q -PcommandLineProjectProp=commandLineProjectPropValue -Dorg.gradle.project.systemProjectProp=systemPropertyValue printProps

commandLineProjectPropValue

gradlePropertiesValue

systemPropertyValue

envPropertyValue

systemValue

2.2.1 检查项目属性

你可以通过使用其使用变量的名称来访问构建脚本中的项目属性。 如果此属性不存在,将抛出异常,构建将失败。 如果您的构建脚本依赖于用户可能设置的可选属性,也许在gradle.properties文件中,您需要在访问它们之前检查存在。 您可以使用返回true或false的方法hasProperty(‘propertyName’)来执行此操作。

三、通过代理访问网络

配置HTTP或HTTPS代理(例如,用于下载相关性)是通过标准JVM系统属性完成的。 这些属性可以直接在构建脚本中设置; 例如,设置HTTP代理主机将使用System.setProperty(‘http.proxyHost’,‘www.somehost.org’)完成。 或者,属性可以在gradle.properties文件中指定,无论是在构建的根目录中还是在Gradle主目录中。

例12.2配置HTTP代理

gradle.properties

systemProp.http.proxyHost=www.somehost.org

systemProp.http.proxyPort=8080

systemProp.http.proxyUser=userid

systemProp.http.proxyPassword=password

systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost

HTTPS有单独的设置。

例12.3配置HTTPS代理

gradle.properties

systemProp.https.proxyHost=www.somehost.org

systemProp.https.proxyPort=8080

systemProp.https.proxyUser=userid

systemProp.https.proxyPassword=password

systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost

我们找不到所有可能的代理设置的良好概述。 一个要查看的地方是Ant项目的文件中的常量。 这是一个到存储库的链接。 另一个是JDK文档中的“网络属性”页面。 如果有人知道更好的概述,请通过邮件列表通知我们。

3.3.1NTLM认证

如果您的代理需要NTLM身份验证,您可能需要提供身份验证域以及用户名和密码。 有两种方法可以提供用于认证NTLM代理的域:

· 将http.proxyUser系统属性设置为像domain / username这样的值。

· 通过http.auth.ntlm.domain系统属性提供身份验证域。
为了便于交流共同学习,可以加QQ群861531554(Android学习交流) 欢迎批评指导!!!

猜你喜欢

转载自blog.csdn.net/AndroidStudyDay/article/details/88761257