gradle 下一代构建工具

1. Gradle安装: 
    从官方网站www.gradle.org下载最新版本,解压后,将GRADLE_HOME/bin目录加到系统环境变量PATH上。测试是否配置成功在命令行运行:gradle -v 会打印出gradle的版本号等信息. 

download最新版本的gradle,网址如下:
http://www.gradle.org/get-started
然后将下载下来的zip包解压放在

/Users/mrchow/Documents/java/gradle-2.13

我是修改账号下的.bash_profile

> touch ~/.bash_profile

> sudo vim ~/.bash_profile
尾部加入:
GRADLE_HOME=/Users/mrchow/Documents/java/gradle-2.13; export GRADLE_HOME export PATH=$PATH:$GRADLE_HOME/bin

然后再在console上输入以下命令:
source ~/.bash_profile

这样就安装成功啦,可以通过以下命令来查看是否安装成功。
gradle -version

如果提示没有gradle命令,则有可能是:
1. GRADLE_HOME路径可能不对;
2. 没有执行source ~/.bash_profile



2. Gradle基本使用: 
   新建一个项目后,在项目文件夹下创建build.gradle文件,并加入内容: 
      apply plugin: 'eclipse'。 
   然后在终端运行gradle eclipse即可构建eclipse IDE的开发环境。 

   gradle默认值:gradle有些目录是有默认值存在,建议项目的配置,承袭了maven的风格,如: 
        java的源码目录:src/main/java 
        java的测试代码目录:src/test/java 
        资源文件目录:src/main/resources 
        测试的资源目录:src/test/resources 
        WEB项目的目录:src/main/webapp   可通过webAppDirName变量更改  ex: webAppDirName="webapp"(此属性官方已不建议使用) 

下面是我的一个web项目的build.gradle文件,我们先来预览一下,接下来再分步简单介绍: 

Java代码   收藏代码
  1. apply plugin: 'maven'  
  2.     apply plugin: 'war'  
  3.     apply plugin: 'eclipse-wtp'  
  4.     apply plugin: 'jetty'  
  5.   
  6.     webAppDirName = 'webapp'  
  7.   
  8.     repositories {  
  9.         mavenCentral()  
  10.     }  
  11.   
  12.     dependencies {  
  13.         compile (  
  14.             "javax.servlet:javax.servlet-api:3.1-b07",  
  15.             "org.slf4j:slf4j-log4j12:1.7.5",  
  16.             "org.slf4j:slf4j-jdk14:1.7.5",  
  17.             "mysql:mysql-connector-java:5.1.24"  
  18.         )  
  19.     }  
  20.   
  21.     task copyHbm(type: Copy){  
  22.         from 'src/main/java/com/base/model'  
  23.         into 'build/classes/main/com/base/model'  
  24.         exclude '**/*.java'  
  25.     }  



build.gradle文件常用任务解析:
    apply plugin: 'maven': 使用maven做为jar包的信赖管理,通过mave仓库下载项目所需的信赖包 
    apply plugin: 'war':指定web项目,项目编译(在项目提示符下执行:gradle build)时生成项目的war包。 
    apply plugin: 'java': 指定项目为java项目,项目编译(在项目提示符下执行:gradle build)时生成项目的jar包。 
    apply plugin: 'eclipse-wtp':插件将构建web项目的开发环境,生成所需要的.project,.classpath等文件。因为我web开发使用的是eclipse-j2ee版本,所以指定为wtp环境。 
    apply plugin: 'eclipse':java项目的eclipse开发环境构建.生成所需要的.project,.classpath等文件。 
    apply plugin: 'jetty':加入jetty的支持,代码修改后直接执行命令gradle jettyRun即可运行web项目。 
   repositories: 指定仓库使用。 
    dependencies:项目依赖定义,compile为编译级别依赖,还有testCompile为测试级别的依赖等。 
    compile: jar包的依赖配置有几种方法,我这里采用的是较为简略的方式,其中还有一种是: 
        

Java代码  
  1. compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'  
  2. testCompile group: 'junit', name: 'junit', version: '4.+'  


    task copyHbm(type: Copy): 是自定义的一个任务,目的是将hibernate的映射文件也拷贝到正确的目录,gradle默认源码包下只对java文件名进行打包,xml文件则被忽略了。在项目提示符下gradle copyHbm即可执行任务定义的动作。 
    
gradle常用命令: 
      
        gradle eclipse : 构建开发环境,下载定义的jar包 
        gradle build : 编译项目,生成build文件夹,并生成相应的jar或war包。 
        gradle clean : 与build相反,删除build文件夹。

 

gradle和maven有什么区别?

 

作者:EZLippi
链接:http://www.zhihu.com/question/29338218/answer/51293828
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。

整个过程可以分成以下几个步骤:

  • 编译源代码
  • 运行单元测试和集成测试
  • 执行静态代码分析、生成分析报告
  • 创建发布版本
  • 部署到目标环境
  • 部署传递过程
  • 执行冒烟测试和自动功能测试
如果你手工去执行每一个步骤无疑效率比较低而且容易出错,有了自动化构建你只需要自定义你的构建逻辑,剩下的事情交给工具去完成。

虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数,比如在Maven中你要引入一个依赖:
<properties>
        <kaptcha.version>2.3</kaptcha.version>
    </properties>
<dependencies>
        <dependency>
            <groupId>com.google.code.kaptcha</groupId>
            <artifactId>kaptcha</artifactId>
            <version>${kaptcha.version}</version>
            <classifier>jdk15</classifier>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

然后我将其转换成Gradle脚本,结果是惊人的:

dependencies {
    compile('org.springframework:spring-core:2.5.6')
    compile('org.springframework:spring-beans:2.5.6')
    compile('org.springframework:spring-context:2.5.6')
    compile('com.google.code.kaptcha:kaptcha:2.3:jdk15')
    testCompile('junit:junit:4.7')
}
注意配置从原来的28行缩减至7行!这还不算我省略的一些父POM配置。依赖的groupId、artifactId、 version,scope甚至是classfier,一点都不少。较之于Maven或者Ant的XML配置脚本,Gradle使用的Grovvy脚本杀伤力太大了,爱美之心,人皆有之,相比于七旬老妇松松垮垮的皱纹,大家肯定都喜欢少女紧致的脸蛋,XML就是那老妇的皱纹。

Gradle给我最大的有点是两点。其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。其二是灵活,各种在Maven中难以下手的事情,在Gradle就是小菜一碟,比如修改现有的构建生命周期,几行配置就完成了,同样的事情,在Maven中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。

猜你喜欢

转载自zeraw.iteye.com/blog/2293672