独自登高楼 望断天涯路

学lucene 学hadoop,Google/baidu搜:“独自登高楼”,进入本博客

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

转载请注明出处: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')方法先判断一下再使用

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lastsweetop/article/details/78914742
文章标签: gradle
个人分类: gradle
所属专栏: Gradle学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭