Gradle可以做些什么呢?
  Gradle已经安装到系统上了,那么它可以做什么呢?在我们为项目创建build.gradle文件之前,我们可以先问一下Gradle目前有哪些可用的任务(Tasks):
  gradle tasks
  我们可以看到可用任务(Tasks)的列表。假设你执行Gradle的目录不存在build.gradle文件,你可以看到一些非常基础的任务,类似于:
  :tasks
  == All tasks runnable from root project
  == Build Setup tasks
  setupBuild - Initializes a new Gradle build. [incubating]
  wrapper - Generates Gradle wrapper files. [incubating]
  == Help tasks
  dependencies - Displays all dependencies declared in root project 'gs-gradle'.
  dependencyInsight - Displays the insight into a specific dependency in root project 'gs-gradle'.
  help - Displays a help message
  projects - Displays the sub-projects of root project 'gs-gradle'.
  properties - Displays the properties of root project 'gs-gradle'.
  tasks - Displays the tasks runnable from root project 'gs-gradle'.
  To see all tasks and more detail, run with --all.
  BUILD SUCCESSFUL
  Total time: 3.077 secs
  尽管上面的列出的任务是可用的,但是如果没有项目的构建配置他们无法提供太多的价值。当配置了项目的build.gradle后,一些任务将变得非常有用。
  如果在build.gradle中配置了插件(plugins)上面的任务列表会变得更长,好在配置插件后使用gradle task看看那些任务是可用的。
  刚说到配置插件,马上我们会配置一个插件来启用基础的Java构建功能。
  构建Java代码
  先从简单的开始,创建一个简单的只有一行的build.gradle文件:
  apply plugin: 'java'
  别看只有一行配置,提供的能力可不是一点点哦。再执行一下gradle task,我们可以看到任务列表中增加了一些内容,比如:用来编译java项目的任务、用来创建JavaDoc的任务、用来执行单元测试的任务。
  我们经常使用的任务是gradle build,这个任务执行以下操作:编译、执行单元测试、组装Jar文件:
  gradle build
  几秒钟以后,会看到”BUILD SUCCESSFUL”输出,说明构建已经完成了。
  可以到”build”目录中查看构建结构,在这个目录中我们可以看到很多子目录,其中有三个我们需要特别注意:
  classes: 保存被编译后的.class文件
  reports: 构建报告(如:测试报告)
  lib: 组装好的项目包(通常为:.jar或者.war文件)
  classes目录包含编译生成的所有.class文件。执行完编译后,我们应该可以在这里找到”HelloWorld.class”和”Greeter.class”。
  到目前为止,我们项目并没有申明任何依赖,所以”debendency_cache”目录是空的。
  “reports”目录会包含项目单元测试的测试报告,当然,当前项目并未编写任何单元测试,所以,也是空目录。
  “lib”目录包含打包后的jar或war文件,在后面的内容中我们将学会如何定义JAR的名称和版本号。
  申明依赖
  我们的Hello World例程非常简单且不依赖于任何第三方库,但是大多数应用程序都会依赖第三方库提供的通用或复杂的功能。
  例如:假设我们希望更好的说”Hello World!”,我们希望应用程序能同时输出当前的日期和时间。当然这可以使用Java自身的日期和时间相关库,但是我们可以使用”Joda Time”库实现更有趣的功能。
  首先,把HelloWorld.jara类修改成下面这样:
  package hello;
  import org.joda.time.LocalTime;
  public class HelloWorld {
  public static void main(String[] args) {
  LocalTime currentTime = new LocalTime();
  System.out.println("The current local time is: " + currentTime);
  Greeter greeter = new Greeter();
  System.out.println(greeter.sayHello());
  }
  }
  这里我们的HelloWorld使用”Joda Time”的LocalTime类来获取和输出当前时间。
  如果我们马上执行gradle build来构建项目,构建过程将会失败,因为我们并未将”Joda Time”库声明为编译时依赖库。
  首先,我们需要添加一些配置来定义第三方库的来源:
  repositories {
  mavenLocal()
  mavenCentral()
  }
  上面的repositories定义,告诉构建系统通过Maven中央库来检索项目依赖的软件包,Gradle在很大程度上依赖Maven构建工具的许多约定和基础功能,包括使用Maven中央的库来处理依赖关系。
  现在我们可以使用第三方库了,但现需要定义:
  dependencies {
  compile "joda-time:joda-time:2.2"
  }
  使用dependencies块,我们定义了一条Joda Time的依赖项。这里,明确指定使用joda-time组内的版本为2.2的joda-time库。
  另一个要注意的是,我们在这个依赖定义中指定依赖是compile范围的。意思是,这个库在编译和运行时都需要(如果我们正在构建WAR文件,这个文件会在/WEB-INF/libs目录下)。另外值得注意的依赖类型包括:
  providedCompile:在编译期间需要这个依赖包,但在运行期间可能由容器提供相关组件(比如:Java Servlet API)
  testCompile:依赖项仅在构建和运行测试代码时需要,在项目运行时不需要这个依赖项。
  后,我们来定义我们将生成的Jar文件的名字:
  jar {
  baseName = 'gs-gradle'
  version =  '0.1.0'
  }
  jar块定义如何命名JAR文件,在上面的例子中,我们的JAR文件的名字为:gs-gradle-0.1.0.jar。
  注:这个时候如果执行gradle build,Gradle会花一些时间从Maven中央库下载Joda Time包(具体下载时间依赖于你的网速)
  使用Gradle Wrapper来构建项目
  Gradle Wrapper是开始一个Gradle构建的方式。它包含了windows批处理以及OS X和Linux的Shell脚本。这些脚本允许我们在没有安装Gradle的系统上执行Gradle构建。要实现这个功能,我们需要在我们的build.gradle文件中增加以下代码:
  task wrapper(type: Wrapper) {
  gradleVersion = '1.11'
  }
  执行下面代码来下载和初始化wrapper脚本:
  gradle wrapper
  命令执行完后,我们可以看到增加了一些新文件。有两个文件在根目录下,wapper的jar文件和properties文件在新增的gradle/wrapper目录下。
  └── initial
  └── gradlew
  └── gradlew.bat
  └── gradle
  └── wrapper
  └── gradle-wrapper.jar
  └── gradle-wrapper.properties
  现在Gradle Wrapper已经可以用来构建系统了。把这些文件增加到版本控制系统中,然后再任何时候、任何地方只要迁出这些文件一个按照同样的方式(与当前生成 Wrapper的Gradle版本一致)构建系统。运行wrapper脚本来构建系统,跟我们之前桥的命令很像:
  ./gradlew build