gradle使用文档

来源:互联网 发布:coreldraw 软件logo 编辑:程序博客网 时间:2024/05/21 21:41

 

1     基本介绍

1.1 前言

gradle是一个基于Apache AntApache 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")

}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 自助取款机存款忘打印了凭条怎么办 高一新生跨省转学籍怎么办 网上买票不小心买成了学生票怎么办 做横幅标语字打出来老是歪的怎么办 创业板股票暂停上市后钱怎么办 新股东入股公司之前的亏损怎么办 目前公司账面亏损有人要入股怎么办 土地确权后没有土地的人怎么办 老板不发工资跑路了怎么办 别人登录了我的美团账号怎么办 月嫂家政公司快坚持不下去了怎么办 华硕飞马4a手机发热怎么办 超级必发指数手机页面没曲线怎么办 唐小僧理财暴雷了投资者该怎么办 教师资格证面试准考证号忘了怎么办 初中学校说处分不给毕业证怎么办? 自动档一键打火的车没电了怎么办 物流代收货款一直拿不到钱怎么办 丰巢快递柜收不到验证码怎么办 拼多多三级惩罚下架3天怎么办 在万达买的衣服穿一次烂了怎么办 内蒙古对于没有地的农民改怎么办 微信号码重新注册后回零钱怎么办 安卓系统文件苹果手机打不开怎么办 课题必须发表论文吗?查重怎么办 学信网学籍绑定输错5次怎么办 大学学校图书馆借的书丢了怎么办 借阅机里的图书不显示书名怎么办 苹果6s锁屏密码忘了怎么办 父亲去世后妈将父亲存款带走怎么办 狗和别的狗打架腿瘸了怎么办 神经病砍人警察不积极处理怎么办 才买了车里面的气味很大怎么办 家里装修两年了很大的木味怎么办 装修一年的房子夏天味很大怎么办 死了怕下地狱活着又受煎熬怎么办 狗狗的疫苗证丢了怎么办 剃了毛的狗不睡觉怎么办 家里的小狗送人了孩子一直哭怎么办 半个月的小狗一天没拉屎怎么办 把狗狗的毛剃了怎么办