Gradle Introduction
目录
- Compileing development Process
- Old compile Mothed
- Modern compile Mothed
- What is Gradle
- Gradle Effect
- What is Groovy
- Groovy syntax reles
- Structure Script
- Peoject
- Attribute
- Task
- Example #1
- apply
- Example #1
- Example #2
- Dependency Management
- Example #1
- Example #2
- Multiple Porject Structure
- Testing
- Release
Compileing development Process
Old compile Mothed
1.Manually copy the jar to libs.
2.Manually copy the modules to libs.
3.2.Manually copy the aarto libs.
Modern compile Mothed
- maven
- Gradle
What is Gradle
Gradle is code dependency management tool.
Gradle base is Apache Ant and Apache Maven.
Gradle use Groovy language as the implementation.
For java domain.
Gradle Effect
I often use it:
- Dependency Management
- Code Compile
- Pack to APK
- Pack to Jar
I don't user it very often:
- Testing
- Automatic execution
- Release
Example # Android 新建工程阶段
What is Groovy
Groovy is seemed Java that OOP language.
Groovy syntax reles
TODO.
Structure Script
Two base concept:
- project
- task
Peoject
每个构建中至少包含一个项目。
在多项目构建中,一个项目依赖于其他项目。
一个项目代表一个正在构建的组件(如一个jar文件),当构建启动后,Gradle会给予build.gradle实例化一个org.gradle.api.Project类,并且能通过project变量使其隐式可用。
Attribute
- group
- name
- version
- apply
- dependencies
- repositories
- task
Task
一个项目至少包含一个或多个任务。
对应 org.gradle.api.Task类,主要包括任务动作和任务依赖。
任务动作定义了一个最小的工作单元,可以定义依赖于其他任务、动作序列和执行条件。
function:
- dependsOn
- doFirst
- doLast
- <<
Example #1
task task2{println "task2"
}task1 <<{println "task1 append"
}
apply
apply plugin:'×××' //引入二进制插件
apply from:'×××' //引入应用脚本插件
plugin effect:
- 模块化构建脚本的功能
- 公共的功能可以抽取出来成为插件,可以供多个 build.gradle 使用,增加复用性
Example #1
1.创建一个 Java Library 的 module
2.定义一个接口
class PluginTest implements Plugin<Project> {@Overridevoid apply(Project project) {//定义一个 Task project.task("MyTask") {doLast {println "MyTask doLast invoke..."}}}
}
3.在外部引入二进制插件
//在 app 下的 build.gradle 引用这个插件
apply plugin: PluginTest
Example #2
apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVersion "25.0.1"}}
在Andriod中有3类工程:
- App插件id:com.android.application
- Library插件id:com.android.library
- Test插件id:com.android.test
一般一个项目只会设置一个App插件,而module一般是会设置为Library插件。
Dependency Management
大部分基于JVM的软件项目都需要依赖外部类库来实现、重用现有功能。
自动化的依赖管理可以明确依赖的版本,解决因传递性依赖带来的版本冲突。
- 明确依赖的版本
- 解决版本冲突
Concept:
工件坐标
工件 ≈ jar
坐标 ≈ group、name、version常用仓库
公共仓库:mavenLocal、mavenCentral(https://search.maven.org)、jcenter...
自定义仓库:本地创建的包仓库
文件仓库: 保存本地文件路径,不建议使用,容易冲突依赖的传递性
A<----B<----C<----D
Example #1
repositories{maven{url 'http://192.168.0.1' #自己私服的地址}mavenCentrral() #使用远程仓库mavenLoacl() #使用远程仓库
}dependencies{compile 'junit:junit:4.12'
}
Example #2
allprojects {repositories {jcenter()}
}
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:25.3.0'testCompile 'junit:junit:4.12'
}
Multiple Porject Structure
TODO
Testing
TODO
Release
TODO
转载于:https://www.cnblogs.com/mysticbinary/articles/11230367.html
Gradle Introduction相关推荐
- Gradle 2.0 用户指南翻译——第五十章. 依赖管理
本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...
- Gradle 2.0 用户指南翻译——第五十一章. 发布工件
本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...
- 「Gradle学习笔记」一、构建工具
构建工具的产生 在项目开发过程中,出于测试或正式发布的目的,需要进行一系列步骤来构建项目生成可执行的二进制文件.一般来说,首先需要确定项目所需的依赖都已正确安装,然后将项目源代码和依赖编译链接生成 ...
- Gradle 2.0 用户指南翻译——第五十六章. 多项目构建
本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...
- Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库
示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...
- Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...
最新文章
- oracle常用关键字和函数
- 排好序的数组中,找出两数之和为m的所有组合
- Logstash Introduction
- 《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性...
- 血压测量:很重要的事情!
- sql基线建立-知识准备
- Activity内嵌Fragment,当Activity recreate时Fragment被添加多次,造成相互遮盖
- JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结
- 2021年中国一次性卫生设备市场趋势报告、技术动态创新及2027年市场预测
- php基础案例例子,PHP基础案例教程
- OSEK Os的任务调度
- blender做MMD心得(一)
- java出现报错java.lang.IndexOutOfBoundsException
- tableau,js,html,maxVizResizeAttempts错误
- 如何使用swagger的API接口获取数据并且封装
- Java集合框架笔记记录 --- 原创@余胜军 但有个人心得
- Windows终端美化
- Linux网络延迟排查方法
- swift 引用swift_Swift Swift中的单元测试:基础知识
- android sqlite 打包 xe,C++ Builder XE10快速开发关于sqlite数据库APP应用发布小结