`

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中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。
分享到:
评论

相关推荐

    拥抱Gradle:下一代自动化工具.rar

    《拥抱Gradle:下一代自动化工具》是一本深入探讨Gradle这一现代构建自动化工具的专业书籍。Gradle作为一款强大的开源构建系统,已经逐渐成为Java、Android以及其他语言开发项目的首选。本书旨在帮助开发者理解...

    拥抱Gradle:下一代自动化工具.pdf

    Gradle是一款新兴的自动化构建工具,它在Java开发领域迅速赢得了关注。与早期的构建工具如Ant和Maven不同,Gradle使用了一种更加灵活和可读的方式...对于Java开发者而言,Gradle无疑是一个值得拥抱的下一代自动化工具。

    Gradle Material

    第二章“使用Gradle进行下一代构建”将会深入探讨Gradle如何应对现代软件开发中的挑战,包括如何优化构建过程、支持多语言项目、处理复杂的依赖关系管理等问题。通过学习这一章节,读者可以了解到Gradle是如何实现高...

    Java项目构建新型利器——Gradle

    Gradle是基于Java的下一代构建工具,它的出现改变了构建工具的格局,提供了更强的表现力和更好的可维护性。 在Gradle之前,Ant和Maven是Java项目构建的主流工具。Ant是一个功能强大的工具,由一系列可重用的任务...

    Gradle In Action

    第一部分是介绍Gradle,包括项目自动化、使用Gradle构建下一代项目、以及通过示例构建Gradle项目。这一部分适合那些对Gradle还不熟悉,或者希望了解其基础使用的读者。 第二部分专注于掌握Gradle的核心基础知识。它...

    .Gradle.in.Action

    2. **下一代构建技术:Gradle** - Gradle相较于其他构建工具(如Ant和Maven)的优势。 - Gradle如何简化构建流程并提高构建效率。 3. **通过示例构建Gradle项目** - 如何创建一个简单的Gradle项目。 - Gradle...

    Gradle in action

    在书籍的简介中,提到了多方面的主题,包括但不限于介绍项目自动化、下一代构建技术、依赖管理、多项目构建、使用Gradle进行测试、扩展Gradle、集成与迁移、从构建到部署、IDE支持、多语言项目的构建、代码质量管理...

    Android-下一代Android打包工具100个渠道包只需要10秒钟

    标题提到的"下一代Android打包工具"解决了这个问题,它能以惊人的速度生成大量的渠道包。这个工具可能是一个自动化脚本或者插件,其核心目标是提高开发效率并简化发布流程。 描述中的"100个渠道包只需要10秒钟"表明...

    Gradle混淆+打包Jar包基础

    Gradle混淆主要针对Android开发,因为Android Studio默认使用的构建工具就是Gradle。混淆的主要目的是为了保护代码安全,减少逆向工程的可能性。在Android项目中,我们可以使用ProGuard或R8进行混淆。ProGuard是老...

    gradleProject

    一、Gradle:新一代构建工具 Gradle是一款基于Groovy和Java的开源构建自动化系统,它允许开发者使用简洁易读的领域特定语言(DSL)来定义构建过程。相比传统的Maven或Ant,Gradle具有更强的灵活性和扩展性,支持多...

    android反编译和打包工具.rar

    3. **R8**:Google推出的下一代代码混淆工具,比ProGuard更快且更小,它是Android Studio 3.4及更高版本的默认混淆器。 4. **签名与ZIPAlign**:APK在发布前必须签名,以验证开发者身份并确保更新的合法性。签名...

    wa-workflow-api:开始工作分配工作流程的API

    请避免使用JUnit4并使用下一代 构建和部署应用程序 构建应用程序 该项目使用作为构建工具。 它已经包含./gradlew包装器脚本,因此无需安装gradle。 要构建项目,请执行以下命令: ./gradlew build 运行应用程序 ...

    wa-task-management-api:工作分配任务管理API

    请避免使用JUnit4并使用下一代构建和部署应用程序构建应用程序该项目使用作为构建工具。 它已经包含./gradlew包装器脚本,因此无需安装gradle。 要构建项目,请执行以下命令: ./gradlew build 这将执行编译,检查...

    build-tools_28.0.3-windows.rar

    3. **Gradle插件兼容性**:28.0.3版本的`build-tools`与Gradle插件3.x版本有良好的兼容性,这使得开发者能够使用最新的构建工具和Gradle插件,提高构建效率。 4. **性能优化**:此版本在编译速度和内存使用上做了...

Global site tag (gtag.js) - Google Analytics