Gradle基本知识

       本篇内容主要是阅读 http://android.jobbole.com/71999/该文章后进行整理 而来。

知识点

  • gradle 中有两个概念: 项目,任务

    项目:是指我们的构建产物(比如jar)或者实施产物(将应用程序部署到生产环境),一个项目包含一个或者多个任务。
    任务:是指不可分割的最小工作单元,执行构建工作(比如编译项目或者执行测试)。
    每一次的gradle构建都包含有一个或者多个项目 :Build (1)——(n) project(1)—(n)task

  • gradle配置文件

Gradle构建脚本(build.gradle)指定了一个项目和它的任务。
Gradle属性文件(gradle.properties)用来配置构建属性。
Gradle设置文件(gradle.settings)对于只有一个项目的构建而言是可选的,如果我们的构建中包含多于一个项目,那么它就是必须的,因为它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。

插件能够在项目中添加新任务 为新加入的任务提供默认配置,这个默认配置会在项目中注入新的约定(如源文件位置)。
加入新的属性,可以覆盖插件的默认配置属性。
为项目加入新的依赖

  • 插件的使用方式可以通过名称或者类型来指定:
 apply plugin: ‘android'  apply plugin: ‘com.android’

       java项目默认的项目结构如下:

src/main/java目录包含了项目的源代码。
src/main/resources目录包含了项目的资源(如属性文件)。
src/test/resources目录包含了测试资源。

       所有我们构建生成的文件都会在build目录下被创建,这个目录涵盖了以下的子目录,

classes目录包含编译过的.class文件。
libs目录包含构建生成的jar或war文件。

  • 名词解释

assemble任务会编译程序中的源代码,并打包生成Jar文件,这个任务不执行单元测试。仅仅执行项目打包所必须的任务集。
build任务会执行一个完整的项目构建。任务执行项目打包所必须的任务集,以及执行自动化测试。
compileJava任务会编译程序中的源代码。

       assemble,build这两个命令都会在build/libs目录中创建一个file-java-project.jar文件。默认创建的Jar文件名称是由这个模版决定的:[projectname].jar,此外,项目的默认名称和其所处的目录名称是一致的。因此如果你的项目目录名称是first-java-project,那么创建的Jar文件名称就是first-java-project.jar。

gradle tasks 命令可以得到一个可运行任务及其描述的完整列表

  • 示例:采用java插件构建一个jar包,
           gradle如下,我们加入一个Jar任务,每一个Jar对象都一个manifest属性,这个属性是Manifest(http://www.gradle.org/docs/current/javadoc/org/gradle/api/java/archives/Manifest.html)的一个实例。我们可以对生成的Jar文件的主类进行配置,使用Manifest接口的attributes()方法。使用一个包含键值对的map结构指定加入到manifest文件的属性集。
    我们能够通过设置Main-Class属性的值,指定我们程序的入口点:java -jar first-java-project.jar
apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class':'xxx.HelloWorld'
    }
}
  • 依赖管理

       仓库管理:仓库是一中存放依赖的容器,每一个项目都具有一个或多个仓库,gradle支持Ivy仓库,Maven仓库,Flat directory仓库
Ivy仓库:可以通过url或者本地文件系统地址,将Ivy仓库加入到我们的构建中。 参考入下:http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:ivy_repositories
eg:

repositories {
    ivy {
        url  "http://ivy.petrikainulainen.net/repo"
    }
}
repositories {
    ivy {       
        url "../ivy-repo"
    }

       Maven仓库: 同Ivy仓库使用方式类似,只需将ivy改为maven,地址相应换成maven对应的地址,在加入Maven仓库时,Gradle提供了三种“别名”供我们使用,它们分别是:http://www.gradle.org/docs/current/userguide/dependency_management.html#sub:maven_repo

mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的。

       例如采用mavenCentral()

repositories {
    mavenCentral()
}

Flat directory仓库:http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:flat_dir_resolver

repositories {
    flatDir {
        dirs “lib” // 表示从lib目录下查找,可以写多个目录, libA, libB
    }
}
  • 配置依赖:配置完项目仓库后,可以声明其中的依赖: 指定依赖的配置,声明所需的依赖

       在Gradle中,依赖是按照指定名称进行分类的,这些分类被称为配置项,我们可以使用配置项声明项目的外部依赖。Java插件指定了若干依赖配置项,其描述如下:当项目的源代码被编译时,

compile配置项中的依赖是必须的。 runtime配置项中包含的依赖在运行时是必须的。
testCompile配置项中包含的依赖在编译项目的测试代码时是必须的。 testRuntime配置项中包含的依赖在运行测试代码时是必须的。
archives配置项中包含项目生成的文件(如Jar文件)。 default配置项中包含运行时必须的依赖。

       声明配置依赖:最普遍的依赖称为外部依赖,这些依赖存放在外部仓库中。一个外部依赖可以由以下属性指定:

group属性指定依赖的分组(在Maven中,就是groupId)。
name属性指定依赖的名称(在Maven中,就是artifactId)。
version属性指定外部依赖的版本(在Maven中,就是version)。

       eg:分组是groupA,名称是nameA,verion为1.0,依赖脚本为:

dependencies {
    compile group:’groupA', name: ‘nameA', version: ‘1.0//以下是快捷方式, compile可以替换成上面的testCompile等
    compile ‘groupA:nameA:1.0'
}

       我们在接下来的一篇中继续来看看Gradle中的Task知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值