Gradle学习笔记
Contents
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
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
然后导入即可