`
小码哥BASE64
  • 浏览: 123574 次
社区版块
存档分类
最新评论

gradle使用文档

阅读更多

 

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")

}

最后,我们可以通过gradle jettyRun来运行我们的web项目。

分享到:
评论

相关推荐

    基于java的的个人博客网站的设计与实现设计与实现.docx

    基于java的的个人博客网站的设计与实现设计与实现.docx

    基于java的技术大健康综合咨询问诊平台的设计与实现.docx

    基于java的技术大健康综合咨询问诊平台的设计与实现.docx

    java-ssm+vue小型企业办公自动化系统实现源码(项目源码-说明文档)

    系统可以提供信息显示和相应服务,其管理员管理部门经理,管理总经理,管理员工和员工留言以及员工工资,管理内部邮件,管理审批流程,管理离职申请。部门经理给员工发放工资,审核并回复员工留言,管理员工工资,审核员工的离职申请信息,查询和下载内部邮件以及审批流程。总经理查询下载内部邮件和审批流程,审核员工离职申请,查询员工工资,查询员工和部门经理。员工发布留言,发布内部邮件,发布离职申请,查询通知公告和审批流程,查看员工本人工资。 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    基于java的网上办公自动化系统设计与实现.docx

    基于java的网上办公自动化系统设计与实现.docx

    2019优益C x 易烊千玺微博营销案结案报告.pptx

    2019优益C x 易烊千玺微博营销案结案报告.pptx

    led-tcp-maste资源

    led-tcp-maste资源

    金士顿U盘微博营销活动策划方案.ppt

    金士顿U盘微博营销活动策划方案.ppt

    chipup芯昇XS2180-PoE芯片说明,详细版

    chipup芯昇XS2180-PoE芯片说明,详细版

    #_ssm_105_mysql_学生比赛指导管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    基于java的中小企业人力资源管理系统的设计与实现.docx

    基于java的中小企业人力资源管理系统的设计与实现.docx

    C语言入门教程.zip

    【c语言入门】 静态库、动态链接库、include、makefile、io、文件操作函数、管道原理及应用、简单的数据结构

    基于java的在线学习系统设计与实现系统设计与实现.docx

    基于java的在线学习系统设计与实现系统设计与实现.docx

    蓝桥杯第十四届程序C组试题B自行整理(包括答案)

    主要对蓝桥杯第十四届程序C组试题B进行代码编写

    ASP.NET+SQL通用作业批改系统设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    智能制造建模与仿真技术及其发展趋势

    本文详细介绍了智能制造领域里的建模与仿真技术的概念和特点,包括它们的基本定义、最新特点,如集成化、模块化、层次化、跨学科化、计算高速化以及人工智能化的趋势,并阐述了其关键技术,还提供了多个典型案例分析。另外,探讨了未来建模仿真技术在智能制造背景下的发展走向,特别是在实时仿真、云端建模与仿真和下一代数字模型方面的前景。 适用人群:智能制造相关的行业从业者、研究学者或者具有一定工程基础的学生。 使用场景及目标:适用于希望深入理解建模和仿真如何应用于智能生产的专业人士,并希望通过该领域的技术进步提升自己的业务水平和科研创新能力。 阅读推荐:此资源非常适合那些渴望获得有关智能制造中各种建模与仿真应用场景的知识的人群。它提供了从理论知识到实际工业项目的实例分析,涵盖了广泛的视角。

    EfficientFormer实战:使用EfficientFormerV2实现图像分类任务

    EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势,通过一系列高效的设计改进和搜索方法,实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受限的硬件上有效部署视觉变换器模型提供了新的思路 原文链接:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/142367223

    一套通过人脸识别遗传病的机器学习系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于java的基于分类算法的学业警示预测系统设计与实现.docx

    基于java的基于分类算法的学业警示预测系统设计与实现.docx

    基于TensorRT实现轻量级语义分割的C++程序源码+文档说明+模型.zip

    基于TensorRT实现轻量级语义分割的C++程序源码+文档说明+模型.zip基于TensorRT实现轻量级语义分割的C++程序源码+文档说明+模型.zip基于TensorRT实现轻量级语义分割的C++程序源码+文档说明+模型.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。

    大数据之机器学习推荐系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

Global site tag (gtag.js) - Google Analytics