简介

相对于 Maven 项目的 pom.xml, Gradle 通过 build.gradle 来实现项目的描述。

与 Maven 的比较

依赖项

目前我们多将 Maven 用于管理依赖项,即:

<dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    <scope></scope>
</dependency>

仅从这一点上说, Gradle 对应的功能是:

dependencies {
    // 缩写
    provided "org.apache.commons:commons-lang3:3.3.2"
    // 完整写法
    provided group: 'log4j', name: 'log4j', version: '1.2.17'
    
    compile 'org.apache.commons:commons-lang3:3.3.2', optional
    compile group: 'log4j', name: 'log4j', version: '1.2.17', optional 
}

变量通过双引号的字符串(和 php 语法比较像)可以直接展开:

allprojects {
    ext {
        springVersion = '4.2.1.RELEASE'
    }
}

dependencies {
	compile("org.springframework:spring-context:$springVersion")
}

依赖项管理

近几年在 Maven 项目中出现的 BOM 功能,在 Gradle 中通过 nebula-dependency-recommender-plugin 实现。

注:这个部分貌似并不能正常工作。 TODO:考察一下 https://github.com/spring-gradle-plugins/dependency-management-plugin 是否能工作。

dependencyManagement {        
   imports {
      mavenBom 'io.spring.platform:platform-bom:1.0.1.RELEASE'
   }    
}    
 
dependencies {
   compile 'org.springframework.integration:spring-integration-core'
}

IDE 集成

Eclipse 和基于 Eclipse 的 IDE

在 Eclipse Marketplace 中搜索 buildship ,安装 Buildship Gradle Integration 即可

相对应的 Eclipse 的 task 为:

apply plugin: 'eclipse'

IDEA

apply plugin: 'idea'

一个基础的 build.gradle 文件

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'

sourceCompatibility = 1.7
targetCompatibility = 1.7
version = '1.0'

repositories {
    mavenLocal()
    maven {url 'http://maven.oschina.net/content/groups/public/'}
    mavenCentral()
}

dependencies {
    compile "commons-collections:commons-collections:3.2"
    testCompile "junit:junit:4.+"
}

test {
    systemProperties 'property': 'value'
}

参考资料