Gradle学习(九)——构建环境

原创 2017年12月27日 17:41:33

转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/78914742

通过gradle.properties配置构建环境

为了更容易的配置用于构建的java进程,Gradle提供了几个选项。你可以在本地环境中配置GRADLE_OPTS或者JAVA_OPTS,比如JVM内存设置,JAVA_HOME,守护进程是否开启,如果这些可以通过版本控制那就更完美了,这样可以保证你的开发组在相同的环境下工作,为了达到这个目的,首先就是要把这类配置放到gradle.properties文件中,然后这个文件通过版本控制。

配置的有限顺序:

  • 类似-Dsome.property这样的系统参数
  • 在GRADLE_HOME中的gradle.properties文件
  • 正在运行过程中的gradle.properties文件

Gralde构建环境支持的属性如下:

  • org.gradle.daemon
    设置为true时,Gradle的守护进程就会运行,Gradle3.0后守护进程是默认开启的。
  • org.gradle.java.home
    用于Gradle运行的JAVA_HOME的路径,可以是jre也可以是jdk
  • org.gradle.jvmargs
    Gradle守护进程运行时的JVM参数
  • org.gradle.configureondemand
    按需配置模式,仅仅针对有明确指定的工程才会进行配置操作,对多项目构建来说可以快速的构建
  • org.gradle.parallel
    Gradle可以开启并行模式
  • org.gradle.workers.max
    Gradle同时运行的worker数量
  • org.gradle.logging.level
    Gradle日志的级别quiet, warn, lifecycle, info或者debug
  • org.gradle.debug
    在5005端口开启Gradle的远程Debug模式
  • org.gradle.daemon.performance.enable-monitoring
    设置成false,Gradle就不会再去监听内存的使用情况,true的话就会监听,并且内存不足时就会关闭Gradle的守护进程
  • org.gradle.caching
    设置成true后,Gradle就会重用之前的输出
  • org.gradle.console
    Gradle不同的输出格式,可以是plain, auto或者rich

多个java进程

很多设置是在为构建进程启动一个新的JVM进程时配置的。这意味着解析不同的gradle.properties文件后都会新起一个JVM进程去构建,有守护进程的构建就会重用一个JVM进程。每次启动JVM是非常消耗性能的,这也是守护进程需要解决的问题。

Gradle属性和系统属性

Gradle提供了各种各样的方法为构建添加属性。通过-D选型可以在命令行下为Gradle的运行时构建增加系统属性,-D之后的参数可以参考java命令行的参数,实际上的效果是一致的。

你也可以使用properties文件为你的项目增加属性,你也可以把gradle.properties放到Gradle的home目录下(GRADLE_USER_HOME).在多项目构建是你可以把gradle.properties添加到父项目的目录中,Gralde的home目录下的gradle.properties是优先于项目目录的。

你还可以通过命令行下的-P选项给项目增加属性。当遇到一些特别明明的系统属性或者环境变量,Gradle也会设置到系统中。处于安全的原因,在持续集成服务端没有具体的权限时,而你需要去设置属性,那是非常困难的,在这种情况下你不能使用-P选项,你也不能更改系统级别的配置文件。最佳的策略就是修改持续集成服务器的配置,但是这些配置对于普通用户来说是透明的。

如果环境变量的格式是ORG_GRADLE_PROJECT_prop=somevalue,Gradle就互为项目对象设置这些属性,Gradle也支持通过-D设置系统属性的方式为项目添加属性,但格式有点不同,看起来像org.gradle.project.prop

你也可以通过gradle.properties文件来添加系统属性,但是属性名要增加systemProp.这个前缀,然后属性和它的值就会去掉前缀后设置到系统属性终。但要注意在多项目构建中,仅仅root项目会去检查systemProp.前缀的系统属性,其他项目会忽略掉。

我们来看下例子就会清晰很多,
gradle.properties文件:

aProp=aValue
systemProp.cProp=cValue

打印属性的任务:

task printProps {
    doLast {
        println aProp
        println bProp
        println System.properties['cProp']
        println System.properties['dProp']
        println eProp
    }
}

再来看下命令:

gradle printProps -PbProp=bValue  -DdProp=dValue printProps -Dorg.gradle.project.eProp=eValue -q

对应的输出如下:

aValue
bValue
cValue
dValue
eValue

项目属性检查

在构建脚本中可以像使用变量一样直接使用项目属性,但是有些属性是可选的,如果找不到该属性就会直接报异常,因此对于这些可选属性可以先通过hasProperty('propertyName')方法先判断一下再使用

版权声明:本文为博主原创文章,未经博主允许不得转载。

org.gradle.jvmargs=-Xmx1536m

在家里将编译好的FFmpeg项目带到公司,打开android studio后,出现了问题提示如下的错误:顿时虎躯一震,不会是又有问题了吧!?仔细一看,原来是初始化VM时,不能得到相应的足够的空间!额…...
  • qq_25497621
  • qq_25497621
  • 2017年07月26日 11:53
  • 533

Gradle 多模块项目实现 Maven Parent 继承方式

Gradle 是基于 JVM 的构建工具,是基于 Ant 、Maven、ivy 概念的一款通用灵活的构建工具,基于 Groovy 脚本构建,目前支持 Java、Groovy、Kotlin 和 Scal...
  • aixiaoyang168
  • aixiaoyang168
  • 2017年09月19日 11:12
  • 3049

gradle构建多module的项目

1. 配置子项目   在多模块的项目中,Gradle遵循惯例优于配置 (Convention Over Configuration)原则。 在父项目的根目录下寻找settings.grad...
  • u011871829
  • u011871829
  • 2015年08月20日 11:12
  • 1312

Gradle多环境配置

在开发中遇到了多个不同的环境, 比如测试环境, 上线环境, 甚至根据不同开发组有多个环境, 平常做法就是建一个类来存储, 然后在里面不停的注释来达到切换环境的效果, 其实gradle提供了多环境配置,...
  • huiiiiiiii
  • huiiiiiiii
  • 2016年10月17日 19:14
  • 1142

Groovy语言中<<与普通创建的不同 (Gradle)

闭包中的 Action(行为)VS Configuration(配置) 1.Action task hello
  • zhjali123
  • zhjali123
  • 2015年03月17日 10:23
  • 487

开源项目:版本更新

本文作者012-2018azhon博客:https://github.com/azhon声明:本文由作者 azhon 授权发布,未经原作者允许请勿转载 看到上面蓝色字了吗,点下吧目录编译问题效果图功能...
  • Utzw0p0985
  • Utzw0p0985
  • 2018年02月01日 00:00
  • 39

Android Studio Gradle

Android Studio Gradle基本概念 gradle是一个构建工具,集合了编译,运行,签名,打包等。 android Studio中的一个project相当于eclipse中的一个work...
  • u014150848
  • u014150848
  • 2017年01月07日 13:39
  • 167

Idea上使用Gradle构建Spark项目

新建项目选择Gradle项目 build.gradle group 'org.fashj' version '1.2'apply plugin: 'idea' apply plugin: 'scala...
  • zheng_sida
  • zheng_sida
  • 2016年10月21日 15:19
  • 1878

Gradle 1.12翻译——第二十章. 构建环境

第二十章. 构建环境 20.1. 通过 gradle.properties 配置构建环境 Gradle 提供了几个选项,可以很容易地配置将用于执行您的构建的 Java 进程。当可以通过 GRADLE_...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年11月25日 08:34
  • 3681

maven 子项目如何使用父项目的jar包

如果父pom中使用的是....方式,则子pom会自动使用pom中的jar包,如果父pom使用....方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId...
  • z69183787
  • z69183787
  • 2014年03月27日 12:36
  • 5403
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle学习(九)——构建环境
举报原因:
原因补充:

(最多只允许输入30个字)