Gradle 笔记

Gradle 可以代替 Maven 完成自动化构建。

Gradle 结构

  • setting.gradle // 确定参与构建的 Project 集合
    • build.gradle // 执行 Task 的必备信息
      • TaskA // 最小执行单元
      • TaskB
      • ...

最基本的任务定义

Task 是 Gradle 构建的最小执行单元。 clean 就是一种最常见的 Task。

Task 就相当于 Java 中的一个类,继承于基类 DefaultTask,也可以再被子 Task 集成

// build.gradle
task hello {
	println "配置阶段执行"
  doFirst {
    println '最先执行'
  }
	doLast {
		println '最后执行'
  }
}
$ gradle hello
> Configure project :
配置阶段执行

> Task :hello
最先执行
最后执行

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

常用命令:

  • gradle init 用于创建项目骨架

单个 Java 项目构建

常用任务:

  • clean

    删除 build 目录以及所有构建完成的文件。

  • assemble

    编译并打包 jar 文件

  • check

    编译并测试代码。

  • dependencies

    添加外部依赖

Java 项目 build.gradle 示例

apply plugin: 'java' // 使用 Java 插件。可用于自动寻找对应目录,及其他默认配置
apply plugin: 'eclipse' // 使用 eclipse 插件。
sourceCompatibility = 1.5 // 编译级别
version = '1.0' // 代码版本
jar {  // 为 jar (打包)任务的 manifest 模块增加属性定义
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
    }
}
repositories { // 配置 Gradle 的依赖源,此处使用 Maven 作为依赖源
    mavenCentral()
}
dependencies { // 配置项目依赖,相当于 Maven 种的 dependencies
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}
test { // 为测试任务增加属性定义
    systemProperties 'property': 'value'
}
uploadArchives { // 发布 Jar 包
    repositories {
       flatDir {
           dirs 'repos'
       }
    }
}

多个 Java 项目构建

项目结构

multiproject/
  api/
  services/webservice/
  shared/

此处有三个工程。api 工程用来生成给客户端用的 jar 文件,这个 jar 文件可以为 XML webservice 提供 Java 客户端。webservice 是一个 web 应用,生成 XML。shared 工程包含的是前述两个工程共用的代码。

  1. 多项目构建定义

    定义一个多项目构建工程需要在根目录(本例中与 multiproject 同级)创建一个setting 配置文件来指明构建包含哪些项目。并且这个文件必需叫 settings.gradle 本例的配置文件如下:

    // /settings.gradle
    include "shared", "api", "services:webservice", "services:shared"
    
  2. 公共配置

    对多项目构建而言,总有一些共同的配置.在本例中,我们会在根项目上采用配置注入的方式定义一些公共配置。根项目就像一个容器,子项目会迭代访问它的配置并注入到自己的配置中。这样我们就可以简单的为所有工程定义主配置单了:

    // /build.gradle
    subprojects {
        apply plugin: 'java'
        apply plugin: 'eclipse-wtp'
        repositories {
           mavenCentral()
        }
        dependencies {
            testCompile 'junit:junit:4.11'
        }
        version = '1.0'
        jar {
            manifest.attributes provider: 'gradle'
        }
    }
    

    注意: 这里为每个子项目都应用了 Java 插件。

  3. 多项目中的工程依赖

    // /api/build.gradle
    dependencies {
        compile project(':shared')
    }
    
  4. 打包发布

    task dist(type: Zip) {
        dependsOn spiJar
        from 'src/dist'
        into('libs') {
            from spiJar.archivePath
            from configurations.runtime
        }
    }
    artifacts {
       archives dist
    }
    

转载于:https://my.oschina.net/tonglei0429/blog/3076415

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值