1 基本介绍
1.1 前言
gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。
gradle能够完成构建、测试、发布和其他诸如软件打包、生成注释文档等等功能。
其特点包括:
l 使用简单
l 支持多方式依赖管理
l 与ant、maven和ivy有良好的相容,支持轻松地从其他构建方式迁移到gradle上
l 支持局部构建
l 支持多工程的构建
l 免费开源
2 安装和使用
2.1 下载
gradle的官方网站地址为:http://www.gradle.org。
官方网站上面可以下载到各种版本,以及文档、和论坛等。目前gradle的最新版本为2.0.
我们下载gradle的最新版本,下载官网上的gradle-2.0-all.zip。
2.2 安装
gradle的安装方法很简单,将解压后的gradle的bin目录加到path目录即可。如下图所示:
其中,gradle_home目录为我们解压gradle下载包的目录。
为了验证我们的gradle是否安装成功。我们可以执行命令gradle–v加以验证。如下图所示:
3 开始一个例子
3.1 新建一个空的java project工程
通过eclipse向导新建一个Java Project工程。工程如下:
3.2 编写HelloWorld类和build.gradle,代码如下
新建一个com.sina.landp的package,然后在其下面新建一个HelloWorld类,代码如下:
package com.sina.landp;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
以上是一个java入门级的类。
再编写build.gradle在我们的工程目录下(如上图所示)。代码如下:
apply plugin: 'java'
3.3 开始构建
在工程所在的目录下,打开cmd,运行gradle build命令,并执行。执行结果如下:
3.4 整理成果
通过上面的执行日志,我们可以看到,我们的工程大致经过了编译、运行测试案例、构建这几个大过程。
同时,我们在工程的目录下,发现新生成了一个build的目录,目录内容如下:
根据目录名称,我们也能大概猜到里边存放的内容。
特别地,我们可以在libs目录下,找到demo-gradle.jar。
在reports目录下存放了一个html,我们用浏览器打开后,其内容如下:
正如其标题所示,该页面反映了我们的单元测试案例结果。
OK,正如你看到的一样,gradle构建就这么简单。我们这里仅用了一行代码,就完成了一个java工程的基本构建。
4 gradle基本概念介绍
gradle构建过程,逻辑上都基于两个基本的概念,projects和tasks。
4.1 projects
一个Project应该指出最终要生成的内容,例如要生成一个Jar、要构建出一个war等等。为了实现最终的目的,我们要通过一个或多个任务来完成。任务即tasks。
4.2 tasks
一个task可以理解为构建的一个步骤,例如编译java文件为class。Task是原子操作。Task和ant非常相像。
5 常用的task介绍
我们现在尝试一些常用的task,并运行起来看看结果。
5.1 编写自己的简单task
刚开始,我们还是来一个hello world。
在我们自己的电脑的文件目录上,新建一个build.gradle的文件,文件内容为:
task hello{println 'Hello World'}
此时通过cmd到该文件所在的目录下,此时在cmd上执行命令:
gradle hello
我们可以得到以下结果:
很显然,我们的任务已经被正确调用并执行。
另外,gradle的task也支持这种写法:
task hello << {println 'Hello World'}
执行结果和上面一样的。
5.2 增加task的任务依赖
修改build.gradle,内容改为:
task hello << {println 'Hello World'}
task intro (dependsOn: hello) <<{println 'intro runs after hello'}
运行gradle intro命令,得到执行结果如下:
5.3 使用task自带的api
Task自带了一些api接口,我们可以申明这些接口要执行的内容,从而插入我们要额外执行的内容。
修改build.gradle文件内容如下:
task hello << {
println 'Hello Earth' }
hello.doFirst {
println 'Hello Venus' }
hello.doLast {
println 'Hello Mars' }
hello << {
println 'Hello Jupiter' }
运行命令,得到以下执行结果:
注意doFirst中的内容首先被执行。
5.4 构建java工程
通过以上几个简单例子,我们对task已经有些认识了。我们现在来看看把这些任务综合起来完成项目的构建。
也许,我们还记得,在第三章的例子中,我们仅用了一行代码,即完成了对整个java工程的构建。代码为:
apply plugin: 'java'
从其执行的日志,我们可以看到,其实,该行命令带来的结果是,gradle将一套完整的java构建工程的task全引入到了我们的构建过程中。重点是,这些引入都是正确的。
我们之前有说到,project就是多个task一起组合起来完成构建任务,并生成我们想要的内容。既然gradle帮我们已经引入了很多的task,那就意味着,我们只需要再添加一些我们需要的task,就可以完成我们自己的项目的构建过程。
确实是这样的。
5.4.1 添加依赖包
接下来,我们做一点更有意义和难度的事情。我们项目里要用到spring,现在需要搭建一个简单的spring工程。那么,第一件事,我们需要做的,就是把spring的jar下载下来。
Ok,修改demo-gradle工程的build.gradle文件内容为:
apply plugin:'java'
repositories {
mavenCentral()
}
dependencies {
compile'org.springframework:spring-context:4.0.5.RELEASE'
}
同样地,在build.gradle所在目录下,执行gradlebuild命令。可以说是奇迹发生了吧,得到执行结果如下:
工程不但构建完成,还下载了我们需要的spring的jar包。此时,如果回到eclipse中,发现下载的jar并没有被引入到工程中。
再在build.gradle中第二行添加一行:
apply plugin: 'eclipse'
之后,执行命令gradle eclipse,得到以下结果:
回到eclipse中,刷新工程,可以看到我们的jar已经被工程引用了。
5.4.2 修改java编译细节
最常见的,就是我们要指定编译生成的jar基于jdk的版本。
修改build.gradle内容为:
apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = 1.6
targetCompatibility = 1.6
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework:spring-context:4.0.5.RELEASE'
}
以上两个属性的作用分别如下:
sourceCompatibility,指定编译java源代码的jdk版本;
targetCompatibility,指定生成的class文件的jdk版本。
添加后执行gradle build命令,也会是成功的。
另外,以上两个属性,也是compleJava的属性。也可以写成:
compileJava {
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
5.4.3 指定manifest文件及细节
在build.gradle中添加以下内容:
jar {
manifest {
attributes 'Implementation-Title':'demo gradle Quickstart', 'Implementation-Version': 1.0
}
}
执行完gradle build命令后,打开demo-gradle.jar中的manifest文件,其内容如下所示:
5.4.4 执行单元测试
在工程中添加一个单元测试案例。如图所示:
HelloWorld.java文件内容调整为:
package com.sina.landp;
public class HelloWorld {
publicstatic void main(String[] args) {
System.out.println("Helloworld!");
}
publicString sayHello(String name){
return"Hello " + name;
}
}
HelloWorldTest.java文件内容如下:
package com.sina.landp;
import staticorg.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
public class HelloWorldTest {
privateHelloWorld helloWorld;
@Before
publicvoid setUp(){
helloWorld= new HelloWorld();
}
@Test
publicvoid should_OK_when_call_sayHello_given_a_name() {
Stringname = "Andy";
Stringresp = helloWorld.sayHello(name);
Stringexpected = "Hello Andy";
assertEquals(expected,resp);
}
}
当然,在我们新建”junit Test Case”时,eclipse就会要求我们添加junit的依赖包。此时,我们的HelloWorldTest可以正常运行。
为了使得gradle能正常运行,我们需要修改build.gradle文件内容如下:
dependencies{
compile 'org.springframework:spring-context:4.0.5.RELEASE'
testCompile "junit:junit:4.11"
}
运行gradle build命令,可以看到成功执行。
5.5 构建web工程
修改build.gradle文件,添加内容:
apply plugin: "war"
我们可以通过jetty快速地运行起来我们的工程。对jetty的配置,我们可以指定jetty服务端口号。
jettyRun {
httpPort = 9898
}
另外,和jar类似,可以对war这个task做一些配置。例如,指定哪些jar不用包含在war里边。对应的配置如下:
war {
baseName = 'depblog'
rootSpec.exclude("**/xxx.jar")
}
最后,我们可以通过gradle jettyRun来运行我们的web项目。
相关推荐
**Gradle使用文档详解** Gradle是一款强大的自动化构建工具,主要应用于Java项目,但同时也支持其他编程语言,如Groovy、Kotlin、C++等。它以其灵活性、可扩展性和高性能而闻名,允许开发者通过声明式的方式定义...
对于遇到的问题,Gradle也提供了丰富的文档和社区支持来帮助用户快速排除故障。构建脚本基础知识部分介绍了如何定义项目和任务,编写构建脚本,管理任务依赖和使用动态任务等基础概念。对于Java开发者,Gradle提供了...
综上所述,本文档提供了关于Gradle 0.9-preview-1版本的安装指南,涵盖了下载、环境配置、基本命令使用等内容,并简要介绍了如何利用Gradle进行Java项目的构建管理。这些知识点不仅适用于文档中提到的具体版本,也对...
在"gradle中文文档"中,你可以找到关于Gradle的全面介绍,包括基本概念、核心概念、任务、依赖管理和插件系统等。以下是文档可能涵盖的一些关键知识点: 1. **基础概念**:理解Gradle的基本构建块,如项目、任务和...
Android Studio Gradle 配置 文档
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy....文档详细说明的gradle的使用规则以及语法,离线环境下可以学习此文档。
本文档为Gradle使用手册V2.5,欢迎指正,也欢迎加入Gradel中文QQ群:463988029,联系我们一起为开源工具做贡献。 本文档前11章来自github但是比较残缺部分章节无线学院补充翻译、12章-31张来自,感谢他们对Gradle...
该项目为Gradle 2.0文档的OmegaT翻译源码,涵盖122个文件,包括88个HTML文件、13个PNG图片、7个CSS样式表、...旨在通过OmegaT辅助翻译工具,对Gradle 2.0文档进行多语言翻译,并将翻译内容整合至msdx/gradledoc项目中。
这份文档旨在帮助用户理解Gradle的工作原理,学习如何配置和使用它来管理项目构建。Gradle是一种强大的、灵活的构建自动化系统,适用于Java、Android和其他多种语言的项目。 在英文版的`gradle-userguide.pdf`中,...
- 定期检查Gradle的官方文档以获取最新版本的信息和支持的特性,确保使用的版本是最新的或最符合项目需求的。 通过以上步骤,您可以顺利完成Gradle的下载、安装及本地环境配置,从而更好地利用Gradle的强大功能进行...
Gradle的构建过程是通过执行`build.gradle`脚本来完成的,脚本使用Groovy编写。通过`apply plugin`,可以引入预定义的Gradle插件,如`war`插件,它扩展了`java`插件,增加了对Java Web项目的支持。Gradle提供了丰富...
gradle是一种新的版本构建工具,集合了ant、maven及ivy的优势,具有配置简单,功能丰富等特征,提供多种默认项目布局,本文档是一个方便学习的实践教程。只要能按照教程一步一步走下来,就能很好地掌握gradle这个...
呵呵,当然不了,利用 Gradle 来构建系统我认为将成为 java 构建项目的最佳选择,简单,快速,对初学者无苛刻要求,可以说是拿来就会用,而且我们再也不用看那些冗长而复杂的 xml 文件了,因为 Gradle 是基于 Groovy...
更多信息和详细文档可以在[Gradle官方网站](Gradle Build Tool)上找到。 5、为什么选择Gradle? 与其他流行的构建工具(如Maven和Ant)相比,Gradle提供了以下优势: 性能:Gradle使用它的守护程序和增量构建技术来...
8. 文档改进:Gradle官方文档通常会在每个新版本中得到更新和扩展,6.1.1的文档可能包含了更多示例和解释,以帮助开发者更好地理解和使用新特性。 总的来说,Gradle 6.1.1离线包为开发者提供了完整的Gradle环境,...
2. **docs** 目录:包含了Gradle的文档,包括API参考、用户指南和开发者手册,帮助开发者理解和学习Gradle的使用方法。 3. **lib** 目录:存储Gradle运行时需要的各种库文件,包括核心库、插件库以及它们的依赖。 ...
更多信息和详细文档可以在[Gradle官方网站](Gradle Build Tool)上找到。 1.2 为什么选择Gradle? 与其他流行的构建工具(如Maven和Ant)相比,Gradle提供了以下优势: 性能:Gradle使用它的守护程序和增量构建...
这个压缩包的大小可能包括了Gradle的运行时环境、库文件、文档、示例代码等多个组成部分。 首先,我们来详细了解一下Gradle的核心概念和功能: 1. **基于DSL的构建脚本**:Gradle 使用Groovy和Kotlin DSL(领域...