用户3405535 2018-09-21 11:34
本文来自网易云社区
作者:孙有军
ps:其实很早就打算在这边来写点东西,多次从其他地方搬blog,可是搬了好几次也没有成功。悲催,闲话少说,言归正传。 本篇内容主要是阅读 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)对于只有一个项目的构建而言是可选的,如果我们的构建中包含多于一个项目,那么它就是必须的,因为它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。
gradle插件,所有有用的特性都有gradle插件提供,以下是gradle标准插件地址 http://www.gradle.org/docs/current/userguide/standard_plugins.html
插件能够在项目中添加新任务 为新加入的任务提供默认配置,这个默认配置会在项目中注入新的约定(如源文件位置)。 加入新的属性,可以覆盖插件的默认配置属性。 为项目加入新的依赖
- 插件的使用方式可以通过名称或者类型来指定:
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' }
网易云 免费体验馆 ,0成本体验20+款云产品!
更多网易研发、产品、运营经验分享请访问 网易云社区 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 爬虫基本知识
- MySQL基本知识点梳理和查询优化
- 一篇文章4条总结,快速了解持续集成测试的基本知识!
- Git基础知识教程整理(Git基本操作)
- TypeScript基本知识点整理(看完绝对入门---真的!!)
- Tomcat的基本使用及相关知识的概述(超详细版)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Flash PHP实用开发技术
Steve Webster著、王黎译 / 王黎 / 清华大学出版社 / 2002-3 / 39.00元
本书将介绍服务器端脚本所提供的各种可能的操作方案,帮助读者掌握设计数据库集成程序和高端应用程序的知识。一起来看看 《Flash PHP实用开发技术》 这本书的介绍吧!