gradle 设置代理


systemProp.http.proxyHost=代理服务器地址
systemProp.http.proxyPort=代理服务器端口
systemProp.http.proxyUser=代理服务器登录用户名
systemProp.http.proxyPassword=代理服务器登录密码
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost|不需要代理的地址

以守护进程方式运行Gradle加速

在以下目录中
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:Users<username>.gradle (Windows)

创建或修改文件名为 gradle.properties 的文件.
添加以下一行:

org.gradle.daemon=true

Gradle 环境变量

GRADLE_OPS

对gradle进程,进行设置JVM参数.如 GRADLE_OPTS="-Xmx1024m

GRADLE_HOME

Gradle的安装目录位置.配置完,注意也要配置下PATH环境变量.如:

PATH=$GRADLE_HOME/bin:$PATH

Gradle 常用命令

### 将项目转换成Gradle

`gradle init`

### 执行某个指定任务

`gradle [-q] 任务名`

### 构建项目

`gradle build`

### 清除构建后的文件

`gradle clean`

### 显示的有任务

`gradle tasks`

### 构建项目但不执行测试任务

`gradle assemble`

### 只编译源码

`gradle compileJava`

### 编译和测试代码,但不打包

`gradle check`

### 查看所有属性

`gradle properties`

### 列出所有项目

`gradle -q projects`

### 搜索任务

`gradle -q help --task 要搜索的任务名 `

### 列出项目依赖

`gradle -q dependencies`

### 模拟执行过程

`gradle -m clean`

### 启动Gradle的GUI

`gradle --gui`

### 强制刷新依赖

`gradle build --refresh-dependencies`

### 命令行创建java 标准项目
`gradle init --type java-library`

task

定义一个task

task helloWorld << {
    println "Hello World, Gradle!"
}

然后执行 gradle helloWorld 即可看到如下输出.

➜  java  gradle helloWorld
:helloWorld
Hello World, Gradle!

BUILD SUCCESSFUL

Total time: 0.465 secs
➜  java

扩展task属性

class fuckTask extends DefaultTask {
    @Input
    def inputProperty
}

task fun(type:fuckTask) {
	inputProperty = "hello world"
}



引用

task fuck {
   println "I'm from --> $fun.inputProperty"
}

输出如下:


I'm from --> hello world
:fuck UP-TO-DATE

BUILD SUCCESSFUL

Total time: 0.479 secs

声明属性

/.gradle/ 目录下 gradle.properties

注意,只能在该目录下有一个属性文件. 在这里配置的,对所有项目都是可见的.在项目里引用:

方法一:
project.属性名

方法二:
task printP << {
    println "$属性名"
}

项目属性

通过命令行 -P 来提供

gradle -Pkey=value

在gradle文件里引用,可直接使用:

$key

系统属性

通过命令行 -D 来提供

gradle -Dkey=value

在gradle里使用:

`System.properties[‘key’]

环境属性

所有以ORG_GRADLE_PROJECT_开头的,相当于-P 例如: ORG_GRADLE_PROJECT_key=value

或者所有以 org.gradle.project.开头的,也相当于-P

例如:

➜  gradle  gradle -Penv=dev  -q task
Hello dev
➜  gradle  gradle -Dorg.gradle.project.env=dev -q task
Hello dev
➜  gradle

在项目下的 gradle.properties 声明属性

key=value

默认 task


defaultTasks 'hello', 'helloTask2'

指定了默认任务, 这样子执行 gradle -q 时它就会执行指定默认的任务 hello, helloTask2.

排除执行某个task

task fu1 << {
	println "fu1"
}

task fu2 << {
	println "fu2"
}

fu2.dependsOn fu1

fu2依赖于fu1,但在执行时,可以排除他不执行fu1. 默认情况下是:

➜  java  gradle fu2
:fu1
fu1
:fu2
fu2

BUILD SUCCESSFUL

Total time: 0.463 secs

排除执行的情况是:

➜  java  gradle fu2 -x fu1
:fu2
fu2

BUILD SUCCESSFUL

Total time: 0.459 secs

可执行Jar包

apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class': 'net.petrikainulainen.gradle.HelloWorld'
    }
}

依赖管理

配置仓库


repositories{
        mavenCentral()
}

配置依赖


dependencies {
        compile group:'commons-collections',name:'commons-collections',version:'3.2'
        testCompile group:'junit',name:'junit',version:'4.0+'
}

将项目转换成 eclipse 项目

apply plugin: 'eclipse'

然后执行 gradle eclipse

设置源码级别和编译输出级别

源码级别
sourceCompatibility = 1.7

编译输出级别
targetCompatibility = 1.7

Gradle对应Maven的坐标默认值

groupId --> project.group
artifactId --> uploadTask.repositories.mavenDeployer.pom.artifactId (if set) or archiveTask.baseName.
version --> project.version
packaging --> archiveTask.extension

打包源码

ext.artifactBaseName="org-emacist"

task sourcesJar(type: Jar) {
    baseName artifactBaseName
    classifier 'sources'
    from sourceSets.main.allSource
}

不同环境打包


if (!hasProperty("env")) {
   project.ext.env = "default"
}

sourceSets {
    main {
        resources {
            srcDirs = ["src/main/resources/public","src/main/resources/$env"]
        }

    }
}

创建一个web项目

cd /path/to/project/root/dir
gradle init --type java-library

然后编辑`build.gradle`文件添加以下内容:

apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'war'
// 这指定Web目录名字,默认为`src/main/webapp`
webAppDirName = 'WebContent'

然后再创建IDE的配置文件
gradle idea

然后导入即可

参考资料

InfoQ