欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Gradle 实践 博客分类: 开源框架 gradle maven ant 

程序员文章站 2024-02-20 21:20:10
...
前段时间在看了文章[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 更好的选择。

附件是整个项目。
相关标签: gradle maven ant