Gradle理解

http://cloudbbs.org/forum.php?mod=viewthread&tid=14451


什么是Gradle


Gradle是一个类似Maven和Ant的构建系统,使用Groovy编写构建脚本,能很方便的进行依赖管理和多项目的构建。Gradle集Ant的灵活与强大以及Maven的依赖管理功能和惯例于一身,是一种更高效的构建工具。


与Maven和Ant等基于XML的构建工具相比,Gradle由于使用基于Groovy语言的DSL语法编写构建脚本,使得脚本清晰易懂,同时也变得更加便于维护(如果熟悉Groovy语言的话)。


Gradle示例


下面以一个简单的Java项目为例,演示在Intellij IDEA下Gradle的用法。首先创建一个build.gradle文件,通过gradle来生成IDEA的项目文件,build.gradle内容如下:


Java代码 
  1. apply plugin: 'idea'
  2. apply plugin: 'java'

这就创建了一个初始的Gradle构建文件。该文件表明项目使用java插件,java插件会自动引入一些task,来完成java相关常用的操作,如编译,测试,打包等。例外,因为这个示例程序会使用Intellij IDEA作为开发工具,故引入了idea插件,idea插件引入了一个task为idea, 执行该task将创建我们的IDEA工程文件:


Java代码 
  1. gradle idea

打开工程文件后,我们就有了一个空白java项目。下面我们来创建项目的目录结构。按照gradle的惯例,项目代码应位于src/main/java下。测试代码应位于src/test/java下。创建完毕后的项目的目录结构如下:



下面我们添加一个Calculator以及相应的测试代码,Calculator代码如下:


Java代码 
  1. package org.dytes.github.gradle;
  2. public class Calculator {
  3.   public Integer add(int a, int b) {
  4.     return a + b;
  5.   }
  6. }

CalculatorTest类内容如下:


Java代码 
  1. package org.dytes.github.gradle;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. import static org.hamcrest.core.Is.is;
  5. public class CalculatorTest {
  6.   @Test
  7.   public void add_should_return_sum() {
  8.     Calculator c = new Calculator();
  9.     int ret = c.add(12);
  10.     Assert.assertThat(ret, is(3));
  11.   }
  12. }

Main类内容如下:

Java代码 
  1. package org.dytes.github.gradle;
  2. public class Main {
  3.   public static void main(String[] args) {
  4.     Calculator c = new Calculator();
  5.     System.out.println("1 + 2 =" + c.add(12));
  6.   }
  7. }

完成之后,项目的目录结构如下:



针对此项目,我们可以编写build文件如下,来完成编译,测试以及打包的工作:


Java代码 
  1. apply plugin: 'idea'
  2. apply plugin: 'java'
  3. repositories {
  4.   mavenCentral()
  5. }
  6. dependencies {
  7.   testCompile(
  8.     'junit:junit:4.11',
  9.     "org.hamcrest:hamcrest-core:1.3"
  10.   )
  11. }
  12. task createJar(type: org.gradle.api.tasks.bundling.Jar, dependsOn:["test"]) {
  13.   version = 0.1
  14.   archiveName = "GradleDemo-${version}.jar"
  15.   manifest{
  16.     attributes("Main-Class""org.dytes.github.gradle.Main")
  17.   }
  18.   from(sourceSets.main.output.classesDir)
  19. }

在上述build脚本中,repositories指定了测试代码编译所依赖的包可以从maven central repository获取。dependencies指定了测试代码在编译时所依赖的包。另外,该build文件中,创建了一个打jar包的task,设置当前版本为0.1,将编译的class文件打包至GradleDemo-0.1.jar,按照惯例该task将项目内容打包至build/libs目录下。


通过运行 gradle tasks可以查看当前构建脚本内所有的task列表。执行gradle createJar即可按照设定完成相应的编译,测试和打包工作了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章