`
SSailYang
  • 浏览: 307917 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Gradle 实践

阅读更多
前段时间在看了文章[5个让人激动的Java项目]之后,决定实践一下 Gradle。

我对 Gradle 的理解是其是结合了 Maven 和 Ant 双方优点的一种基于 Groovy DSL 的新式项目构建工具。而且由于是基于 Groovy 语言,所以语法上要比基于 XML 的 Maven 和 Ant 简洁许多,并且功能更加强大。

现在 Gradle 的最新版本是 1.0 rc1,IDE 方面我用的是 IntelliJ IDEA 11.1。需要说明的是,IDEA 11.1 以前的版本并不能和 1.0 rc1 配合使用,这也是因为 Gradle 是个新工具,变化比较快导致的。

下面通过一个例子,从使用 Maven 的 Repository、OSGi 项目构建、模块化项目等角度为大家初步介绍一下 Gradle 的使用。

// 其实是 Groovy 代码,为了高亮,写成 Java
// build.gradle:
// 包含在 subprojects 中的配置只对 settings.gradle 中包含的子项目起作用。
// 类似的还有 allprojects,对根项目也起作用
subprojects { subproject ->
    // 使用本地的 Maven 仓库
    repositories {
        mavenLocal()
    }

    // 启用插件
    apply plugin: 'java'
    // OSGi 插件用于生产 manifest 文件
    apply plugin: 'osgi'

    // 解决使用 OSGi 插件的一个 bug
    classes.doLast {
        // without this, the jar task fails with "java.lang.IllegalArgumentException: A Jar can only accept a valid file or directory:" as underlying cause
        ant.mkdir(dir: "$buildDir/classes/main")
    }

    // 依赖管理,语法和 Maven 相比简练许多
    dependencies {
        testCompile 'junit:junit:4.8.1'
        compile 'log4j:log4j:1.2.16'
    }
}

// settings.gradle
// 对于多模块系统是必须的
include 'subproj1', 'subproj2'


Gradle 常用的几个命令,jar 是打包,test 的运行单元测试,clean 是清理。与 Maven 不同,jar 命令不会运行单元测试。但是 Gradle 也像 Maven 一样,支持多个命令同时运行,用空格分开即可。

Gradle 的特性是非常多的,我这里介绍的只是一小部分。

Gradle 的不足在于并不像 Maven 的 pom.xml 那样有相对固定的格式,当然这也是其灵活用法的两面性。另一点不足是 Gradle 还是一个比较新的项目,目前为止最新版本也才是 1.0 rc1,上不是正式版本。当然已经有很多著名的开源项目,例如 Hibernate,开始使用 Gradle 作为项目构建工具,所以 Gradle 的前途还是很好的。

对于目前采用 Maven 的项目,一般没有必要移到 Gradle 上。但如果对于大型项目,需要很多自定义的项目构建过程,我认为 Gradle 是比 Maven 或 Ant + Ivy 更好的选择。

附件是整个项目。
3
0
分享到:
评论
2 楼 SSailYang 2013-03-24  
xcoder 写道
请问使用gradle开发osgi项目,怎么对代码进行调试啊?

IntelliJ IDEA 对 Gradle 有原生支持,Eclipse 需要插件。如何调试和是不是 OSGi 的项目有关系吗
1 楼 xcoder 2013-03-20  
请问使用gradle开发osgi项目,怎么对代码进行调试啊?

相关推荐

    Gradle实践1

    Gradle实践文档结构Gradle课程资料 有用软件 配套好书第2节 gradle快速入门第3节 开发环境搭建第4节 Gradle核心语法讲解及实战第5节 G

    实战Gradle

    , 《实战Gradle》(Gradle in Action)全方位地讲解了Gradle 工具相关的知识,包括Gradle 的基本知识、自动化构建的基本概念和最佳实践,以实际案例的方式解释如何使用Gradle 进行软件项目构建。除了基础知识外,...

    实战Gradle_中文完整版---高清---有书签

    《实战Gradle》(Gradle in Action)全方位地讲解了Gradle 工具相关的知识,包括Gradle 的基本知识、自动化构建的基本概念和最佳实践,以实际案例的方式解释如何使用Gradle 进行软件项目构建。除了基础知识外,由于...

    gradle-practice:Gradle样本

    Gradle实践 书籍示例

    gradle-7.4.2-bin.zip

    gradle-7.4.2-bin.zip

    gradle使用教程

    gradle是一种新的版本构建工具,集合了ant、maven及ivy的优势,具有配置简单,功能丰富等特征,提供多种默认项目布局,本文档是一个方便学习的实践教程。只要能按照教程一步一步走下来,就能很好地掌握gradle这个...

    实战Gradle_中文完整版.rar

    (Gradle in Action)全方位地讲解了Gradle 工具相关的知识,包括Gradle 的基本知识、自动化构建的基本概念和最佳实践,以实际案例的方式解释如何使用Gradle 进行软件项目构建。除了基础知识外,由于软件开发绝对不...

    深入理解Android之Gradle

    Gradle 是Java 软件开发中的自动化构建工具,类似于传统工具如Ant 和Maven。Gradle 吸收或沿用了Maven 中比较成功的一些实践,但相对于Maven 或Ant 又有极强的扩展。

    深入理解Android之Gradle.pdf

    Gradle 是Java 软件开发中的自动化构建工具,类似于传统工具如Ant 和Maven。Gradle 吸收或沿用了Maven 中比较成功的一些实践,但相对于Maven 或Ant 又有极强的扩展。

    Android代码-使用外部跑脚本的方式,执行gradle打包并推送到git远程库,支持参数配置!

    Android 自动化打包实践 gradle打包并推送到git远程库 Android 代码混淆在AS的实践 Android webView加载网页播放优酷视频引发“请允许cookie存储”问题的解决 Android Git在bash环境和Android studio工具中的使用

    HelloGradle:Gradle Web App实践项目

    你好Gradle Gradle Web App实践项目

    gradle-clover-plugin:Gradle插件,用于使用Clover生成代码覆盖率报告

    在实践中,这意味着我的活动,对问题的响应和新版本的发布将大大减少。 我正在愿意承担该项目维护和实施工作的。 如果您有兴趣并希望看到此插件继续蓬勃发展,请向我。 该插件使用提供代码覆盖率报告的。Gradle兼容...

    gradle-learning

    学习gradle-learning 语法,代码加实践内容,just test

    Android中使用Gradle来构建App项目的入门指南

    gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的: 1. 方便复用代码和资源 2. 构建多种版本的apk更见简单,不论是为多渠道...可以使用最佳实践但并不强制 5. 良好的IDE支持 Grad

    MyBatisGenerator-Tool::wrench:旨在通过在IntelliJ IDEA中将MyBatis Generator与Gradle结合使用来生成代码的工具

    由于采用了IDEA的教程,并且MyBatis Generator不支持Gradle直接运行,因此这次是在自己的折腾项目过程中,根据一些参考资料加上自己的实践实现的选择,并附上相应的Demo才能自己未来参考,也与大家分享。 本文的Demo...

    ionic2打包android时gradle无法下载的解决方法

    于是经过查阅资料和自己实践测试,总结出以下办法。 方法 其实主要原因是用命令下载时用的是指定的下载途径(可能不该这样形容,欢迎大家评论批评指正),国内通过这样下载十分慢,甚至时断时续,从而导致出现上面的...

    拥抱AndroidStudio之五:Gradle插件开发

    这一章,笔者将以开发和发布一个Gradle插件作为目标,加深学习成果。官方文档给出了比较详细的实现步骤,本文的脉络会跟官方文档差不了太多,额外增补实际例子和一些实践经验。文中的代码已经托管到了github项目中。...

    Android Gradle 项目样例.zip

    为了让学习者能够将理论知识与实践相结合,我们特别准备了项目实战与练习部分。这部分内容包含了多个精心设计的Android项目案例,从需求分析、设计思路到实现过程,都有详细的讲解和代码示例。学习者可以通过实际...

Global site tag (gtag.js) - Google Analytics