#Gradle
配置相关依赖代码量少,不会像maven一样xml过多
打包编译测试发布都有,而且使用起来方便
利用自定义的任务可以完成自己想要的功能
#下载地址
http://services.gradle.org/distributions/
#环境配置
GRADLE_HOME={installed path}
PATH=%GRADLE_HOME%\bin
#验证
gradle -v
#仓库地址(maven通过settings.xml)
GRADLE_USER_HOME=
#集成
IDEA
View -> Tool Windows
Eclipse
安装插件:http://download.eclipse.org/buildship/updates/e46/releases/2.x/
#细节
project
[group, name, version]
settings.gradle
管理多个项目,包含了项目的name
build.gradle
apply 插件应用
dependencies 声明依赖
repositories 从上至下寻找jar包
#Gradle Wrapper
以零配置方式用Gradle构建项目(无需先安装Gradle distribution),确保每个人都使用相同版本的构建工具。
#为项目创建Gradle wrapper脚本
$ gradle wrapper --gradle-version 2.14.1
工程里生成文件
gradlew
gradlew.bat
gradle/wrapper/gradle-wrapper.jar
gradle/wrapper/gradle-wrapper.properties
#查看项目的依赖关系图
$ gradle dependencies
#Gradle支持单一项目构建和多项目构建
$ gradle api:rest:build
#排除某些任务
$ gradle clean build -x test
#分析构建(build/reports/profile)
$ gradle --profile build
#了解gradle编译中的所有任务
$ gradle build --dry-run
#安装到本地maven仓库
$ gradle install
#查看gradle任务
$ gradle tasks
$ gradle tasks --all
#使用Gradle守护程序(3.0版本默认开启)
gradle build --daemon
#多线程构建
打开 ~/.gradle/gradle.properties 添加以下行 org.gradle.parallel=true
#自定义Gradle任务
test.doFirst {
println(“running tests…”)
}
test.doLast {
println("done executing tests...")
}
#为Gradle守护进程提供JVM参数
打开 ~/.gradle/gradle.properties
输入范例: org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#用离线模式运行
$ gradle build --offline
#刷新Gradle依赖缓存(也可以手动删除 ~/.gradle/caches.下次构建时会下载所有依赖并加入缓存中)
$ gradle clean build --refresh-dependencies
#自定义jar
dependencies {
compile files(‘libs/myjar.jar’)
}
#将本地目录中的所有jar加入依赖
dependencies {
compile fileTree(dir: ‘libs’, include: [’*.jar’])
}
#构建项目和所有它所依赖的项目
$ gradle api:model:buildNeeded
#构建项目和所有依赖它的
$ gradle api:rest:buildDependents
#为构建脚本提供默认任务( = gradle)
defaultTasks “clean”,“build”
#在Gradle中使用作用域(version > gradle2.12)
dependencies {
compileOnly ‘javax.servlet:servlet-api:3.0-alpha-1’
}
#显式设置Java编译编码
在 build.gradle 中添加 compileJava.options.encoding = ‘UTF-8’
#禁用传递依赖关系解析
configurations {
compile.transitive = false
}
#初始化Gradle项目
创建使用testng测试框架的Java Gradle项目
$ gradle init --type java-library --test-framework testng
创建使用JUnit测试框架的Java Gradle项目
$ gradle init --type java-library
#签名文件
apply plugin: ‘signing’
signing {
sign configurations.archives
}
#只想在发布的版本中签名而在快照版本中不签名
apply plugin: ‘signing’
signing {
required { !version.endsWith("SNAPSHOT”) }
}
#并行运行测试
test {
maxParallelForks = 2
}
#为测试设置内存
test {
minHeapSize = ‘512m’
maxHeapSize = ‘1024m’
}
#用调试模式运行Gradle
$ gradle clean build --debug
#当任务失败后继续执行任务
$ gradle clean build --continue
#将Maven工程转移至Gradle
$ gradle init --type pom
#强制Gradle重运行即使它是最新的
$ gradle build --rerun-tasks
#启用连续构建
$ gradle test --continuous
#运行一个测试事务(有时我们只需要运行一个测试事务而不是运行所有测试)
$ gradle test --tests tips.CalculatorTest
#运行CalculatorTest 中的某个部分
$ gradle test --tests tips.CalculatorTest.shouldAddTwoNumbers
#使用正则表达式来指定多个测试
$ gradle test --tests “tips.Calculator*Test”
$ gradle test --tests tips.CalculatorTest --tests tips.Calculator1Test
#在一个子模块的测试
$ gradle api:test --tests app.api.PingResourceTest
#生成源文件和java文档jar包
task sourcesJar(type: Jar, dependsOn: classes)
{
classifier = ‘sources’ from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc)
{
classifier = ‘javadoc’ from javadoc.destinationDir
}
artifacts {
archives sourcesJar, javadocJar
}
#在构建脚本中访问环境变量
println(System.getenv(“HOME”))
println("$System.env.HOME")
#配置测试日志(Gradle默认只会在控制台打印测试错误的日志, Gradle允许你用testLogging参数来配置)
test {
testLogging {
events “passed”, “skipped”, “failed”
}
}
#在测试执行期间显示标准输出和错误流
test {
testLogging {
events “passed”, “skipped”, “failed”
showStandardStreams = true
}
}
#存储凭据(不应该在build.gradle中硬编码凭据,而应该依靠home~/ .gradle / gradle.properties来存储凭据。
假设你想使用受凭证保护的Maven存储库。 指定凭据的一种方法是在build.gradle中对它们进行硬编码)
repositories {
maven {
credentials {
username “admin”
password “admin123”
}
url “http://nexus.mycompany.com/”
}
}
#更好的方法
改变自己的 ~/ .gradle / gradle.properties
nexusUsername = admin
nexusPassword = admin123
在build.gradle中引用
repositories {
maven {
credentials {
username “ n e x u s U s e r n a m e " p a s s w o r d " nexusUsername" password " nexusUsername" password"nexusPassword”
}
url “http://nexus.mycompany.com/”
}
}
#调试Java可执行应用程序
$ gradle bootRun --debug-jvm
#使用本地Maven仓库
repositories {
mavenLocal()
}
#排除传递性的依赖
compile(‘org.hibernate:hibernate:3.1’) {
exclude module: ‘cglib’ //by artifact name
exclude group: ‘org.jmock’ //by group
}