Gradle 入门使用(1)

本文同步发表在 http://www.simonme.org/?p=201

一、介绍

1. Gradle 是什么 Gradle 官方对其描述是:能自动构建、测试、部署、打包、生成静态页面,生成文档等等。Gradle整合了Ant对依赖管理的强大能力、灵活和maven的约定的优于配置的特性形成了一种更有效的构建方式。Gradle基于Groovy的领域定义语言,充满了创新。Gradle已经成为很多开源项目的编译系统的选择。

2. Gradle的特性 详细的参见其文档

a. 通过声明来构建和通过约定来构建。

b. 基于编程来描述语言依赖。

c. 构建描述结构化。(使得你的构建代码更优雅,更清晰,更易复用)。

d. Deep API(提供很多hooks,允许你在构建的任何环节做监控和定制配置。)。

e. Gradle scales. f. 多工程构建。

g. 多种方式管理你的依赖(可以和maven和ivy仓库直接对接)...

二、Eclipse 安装Gradle插件(强烈建议全程fan/qiang)

1. 访问 http://dist.springsource.com/release/TOOLS/composite/e3.7/bookmarks.xml (可能要fan/qiang. 还有这个网址中的3.7是个变量,根据你的eclipse版本来确定。)。将这个xml文件保存到到本地.

2.然后按下图操作。 步骤5是 http://dist.springsource.com/release/TOOLS/gradle 

然后一路next。

3. 安装后的配置 安装完以后, 是可以喝maven的插件一样,可以指定gradle装在哪里,还是使用插件自带的gradle warpper。看你自己需要。我用的默认自带的。(maven是建议指向自己安装的)

三、Gradle构建脚本基础

1. 基础安装 a. 需要JDK1.5+。具体步骤即是下载zip包,解压即可用。根据需要决定是否设置GRADLE_HOME环境变量和GRADLE_HOME/bin 目录是否加入系统PATH。 b. JVM参数配置。对于Gradle来说,配置JVM参数,可以通过GRADLE_OPTS和JAVA_OPTS来配置,诸如HTTP Proxy。也可以在gradle脚本的开头处设置。

2. Eclipse的gradle插件使用 若在不联网的情况下,用eclipse的gradle的插件创建gradle工程会失败。 错误信息如下: java.net.UnknownHostException: services.gradle.org at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Sourc

3. Gradle脚本基础

a. Everything in Gradle sits on top of two basic concepts: projects and tasks. Every Gradle build is made up of one or more projects. gradle中有两个重要概念,project和task。每一个gradle构建脚本都有多个project构成。一个project代表着你要构建的软件的一些部件。诸你要构建的要依赖外部什么。一个project可能代表一个jar lib,或者是一个web app。一个project也可能代表一个由多个工程build出来的多个jar包组装好的zip包。一个project并不一定代表要构建,也或许是去做一些事情,比如将你的应用发布到演示或者生产环境上。

b. 每一个project也是由多个task构成的。一个task代表一些原子的构建执行的工作片段。比如编译classes,创建jar,生成javadoc,发布一些压缩包到仓库。

下面就会涉及到Groovy的语法 具体的可以参见本博客另外一篇文章Groovy简明学习

c. Hello World 创建一个build.gradle,写上如下代码:  

task hello { doLast { println 'Hello World!' } }   

gradle的 -b选项 表示指定编译脚本文件. 上面的脚本略作解释,定义了一个hello task,然后执行之。这个task等同于ant的target,但是gradle的task具有更强大的特性。

d. 更快捷的任务定义。

task hello << { println 'Hello world!' }

e. 字符串方法使用

task upper << { String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " + someString.toUpperCase() }  

f. 迭代次数 task count << { 4.times { print "$it " } }    

g. 任务依赖 task hello << { println 'Hello world!' }   task intro(dependsOn: hello) << { println "I'm Gradle" }  

h. 动态任务 4.times { counter -> task "task$counter" << { println "I'm task number $counter" } }

未完,待写  

i. 操作已经存在的任务

原文地址:https://www.cnblogs.com/simoncook/p/2937939.html