目录

  • 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相关推荐

  1. Gradle 2.0 用户指南翻译——第五十章. 依赖管理

    本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...

  2. Gradle 2.0 用户指南翻译——第五十一章. 发布工件

    本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...

  3. 「Gradle学习笔记」一、构建工具

    构建工具的产生   在项目开发过程中,出于测试或正式发布的目的,需要进行一系列步骤来构建项目生成可执行的二进制文件.一般来说,首先需要确定项目所需的依赖都已正确安装,然后将项目源代码和依赖编译链接生成 ...

  4. Gradle 2.0 用户指南翻译——第五十六章. 多项目构建

    本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...

  5. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  6. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  7. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  8. Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库

    示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...

  9. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

最新文章

  1. oracle常用关键字和函数
  2. 排好序的数组中,找出两数之和为m的所有组合
  3. Logstash Introduction
  4. 《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一1.5 大数据系统应有的属性...
  5. 血压测量:很重要的事情!
  6. sql基线建立-知识准备
  7. Activity内嵌Fragment,当Activity recreate时Fragment被添加多次,造成相互遮盖
  8. JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结
  9. 2021年中国一次性卫生设备市场趋势报告、技术动态创新及2027年市场预测
  10. php基础案例例子,PHP基础案例教程
  11. OSEK Os的任务调度
  12. blender做MMD心得(一)
  13. java出现报错java.lang.IndexOutOfBoundsException
  14. tableau,js,html,maxVizResizeAttempts错误
  15. 如何使用swagger的API接口获取数据并且封装
  16. Java集合框架笔记记录 --- 原创@余胜军 但有个人心得
  17. Windows终端美化
  18. Linux网络延迟排查方法
  19. swift 引用swift_Swift Swift中的单元测试:基础知识
  20. android sqlite 打包 xe,C++ Builder XE10快速开发关于sqlite数据库APP应用发布小结

热门文章

  1. 白话解说TCP/IP协议三次握手和四次挥手
  2. curl -windows下接口通讯
  3. 第三周总结 类、对象、包
  4. Bluetooth LE(低功耗蓝牙) - 第一部分
  5. ASP.NET 程序优化
  6. JPDL3.1规范手册
  7. android 仿qq it蓝豹,《IT蓝豹》listview实现各种版面设计功能
  8. 配置Ubuntu Server高速apt-get源
  9. Linux压缩和解压缩命令汇总(tar命令汇总)
  10. C++插入中文到mysql乱码