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

1552062-20190722155807149-1562637816.png

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 新建工程阶段
1552062-20190722155841717-1200938033.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命名空间的引用问题

1、using System.Data; 2、using System.Data.SqlClient; 添加引用的时候&#xff0c;只要添加System.Data “类型的初始值设定引发异常” “未能加载程序集或它的某一个依赖项”-------这种错误可能跟&#xff08;命名空间&#xff09;程序集的引用有关系 转载于:https://www.…

使用LinkedHashMap的Code4ReferenceList最近使用(LRU)实现

最近&#xff0c;我偶然发现了Java面试问题之一&#xff1a; “使用Java集合类实现最近使用的列表&#xff08;LRU&#xff09;缓存吗&#xff1f;” 如果您以前曾处理过类似的问题&#xff0c;那么对您来说真的很容易。 否则&#xff0c;您将开始考虑实现LRU缓存的最佳收集类…

sha1.js

function encodeUTF8(s) {var i, r [], c, x;for (i 0; i < s.length; i)if ((c s.charCodeAt(i)) < 0x80) r.push(c);else if (c < 0x800) r.push(0xC0 (c >> 6 & 0x1F), 0x80 (c & 0x3F));else {if ((x c ^ 0xD800) >> 10 0) //对四字节…

angular 获取ng-repeat完成状态 $last

$index $first $middle $last $odd $even html <ul><li ng-repeat"item in data" repeat-finish&#xff1d;"renderFinish()">{{item.str}}</li> </ul> 指令 app.directive(repeatFinish,function(){return {link: function(sco…

博客园-我的新的开始

励志学会,python,php-由于必须150字所以水一下 python: Python 是由 Guido van Rossum 在八十年代末和九十年代初&#xff0c;在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C、Algol-68、SmallTalk、Unix …

Selenium备忘手册 [转]

最近的项目准备用Selenium作一部分的Regression Test。在SpringSide里参考了一下&#xff0c;又下了个Selenium IDE玩玩&#xff0c;觉得还蛮容易上手&#xff0c;基本上不需要手动写测试代码。 但实操起来时面对各种复杂的页面情况遇到不少麻烦。感觉Selenium 的offical d…

js中7种继承的实现和优缺点

原型链继承 function Parent(){this.name kevin }Parent.prototype.getName function(){console.log(this.name) }function Child(){} Child.prototype new Parent()var child new Child() console.log(child.name) //kevin优点&#xff1a; 简单&#xff0c;容易实现缺点&…

u8系统怎么连接服务器,用友U8 怎么连接远程服务器

用友U8 怎么连接远程服务器 内容精选换一换配置应用系统的跨云热备容灾方案如图1所示。在如图1所示的方案中&#xff0c;用户的生产数据中心的应用系统使用MySQL作为数据库&#xff0c;应用系统与MySQL均热备容灾到华为云上。用户的生产数据中心与华为云之间使用专线进行网络连…

使用Java 8 Streams进行编程对算法性能的影响

多年来&#xff0c;使用Java进行多范例编程已经成为可能&#xff0c;它支持面向服务&#xff0c;面向对象和面向方面的编程的混合。 带有lambda和java.util.stream.Stream类的Java 8是个好消息&#xff0c;因为它使我们可以将功能性编程范例添加到混合中。 确实&#xff0c;lam…

bind搭建(二)反向解析

我们在上一节已经知道了怎么建立DNS的服务器端&#xff0c;可以实现了域名到IP之间的转换。那么好我们现在就来了解一下如何实现反向的DNS解析&#xff0c;也就是IP到域名的映射。 步骤如下&#xff1a; l 在/etc/named中声明反向区域 l 在/var/named/chroot/var/named/中创建…

js求渐升数的第100位

我弟考了道数学竞赛题&#xff0c;问我能不能用代码算结果.. 题目是这样的 用 1、2、3、4、5 组合数字&#xff0c;然后排列大小&#xff0c;从小到大&#xff0c;求排在第100位的数值大小 function foo(chars) {var count 0;if (!chars.length) return;var _foo function(c…

[导入]商业智能2.0?(BI 2.0 from Timo Elliott)

译者注: 关于BI2.0的说法很多&#xff0c;不尽一致&#xff0c;目的只是想多了解一些&#xff1b;译文并不代表译者认可原文观点&#xff0c;只是顺便译了以方便不喜欢E文的朋友。本文是一篇充满探讨及疑问的文章&#xff0c;来自Timo Elliott(Business Objects历史上的第8号员…

poj 3259 Wormholes : spfa 双端队列优化 判负环 O(k*E)

1 /**2 problem: http://poj.org/problem?id32593 spfa判负环&#xff1a;4 当有个点被松弛了n次&#xff0c;则这个点必定为负环中的一个点&#xff08;n为点的个数&#xff09;5 spfa双端队列优化&#xff1a;6 维护队列使其dist小的点优先处理7 **/8 #include<stdio.h&g…

编写干净的测试–用特定领域的语言替换断言

很难为干净的代码找到一个好的定义&#xff0c;因为我们每个人都有自己的单词clean的定义。 但是&#xff0c;有一个似乎是通用的定义&#xff1a; 干净的代码易于阅读。 这可能会让您感到有些惊讶&#xff0c;但是我认为该定义也适用于测试代码。 使测试尽可能具有可读性是我…

如何让MFC程序关闭按钮失效,也无法右击任务栏关闭窗口来关闭?

如何让MFC程序关闭按钮失效&#xff0c;也无法右击任务栏关闭窗口来关闭&#xff0c;即右键任务栏的关闭窗口失效呢&#xff1f;很简单&#xff0c;有一个小窍门就是&#xff1a;响应IDCANCEL消息&#xff0c;具体实现如下&#xff1a; 首先定义消息映射&#xff1a;ON_BN_CLIC…

令人眼睛一亮的履历表

令人眼睛一亮的履历表 你辛辛苦苦写的一份简历&#xff0c;可在人事经理眼里最多只是停留几十秒的时间。如果时机拿捏不好&#xff0c;它会给你造成麻烦&#xff1a;它可能暴露你的短处&#xff0c;而且基本目的都是供人淘汰之用。然而&#xff0c;当你必须做出履历表时&#…

angularjs封装bootstrap官网的时间插件datetimepicker

背景:angular与jquery类库的协作 第三方类库中&#xff0c;不得不提的是大名鼎鼎的jquery,现在基本上已经是国内web开发的必修工具了。它灵活的dom操作&#xff0c;让很多web开发人员欲罢不能。再加上已经很成熟的jquery UI 库和大量jquery 插件&#xff0c;几乎是一个取之不尽…

Java中的得墨meter耳定律–最少知识原理–实际示例

得墨meter耳定律&#xff08;也称为最少知识定律&#xff09;是一种编码原理&#xff0c;它表示模块不应该知道其操作的对象的内部细节。 如果代码依赖于特定对象的内部细节&#xff0c;则很有可能一旦该对象的内部发生更改&#xff0c;它就会被破坏。 由于封装是关于隐藏对象的…

课后作业1

自我介绍 我叫张阔&#xff0c;我的爱好是旅行&#xff0c;游览世界的美好风光&#xff1b; 我的码云个人主页是&#xff1a;https://gitee.com/ZkTt0428&#xff1b; 我的第一个项目地址是&#xff1a;https://gitee.com/ZkTt0428/Frist&#xff1b; 目前代码量有10000行了&am…

记录6月28日的体验,自己现实的感触

2016年6月28日&#xff0c;是我自己要求的要去湖北的日子&#xff0c;可是现在&#xff0c;这个只能成为过去式&#xff0c;只能是提一提&#xff01; 2016年5月17日&#xff0c;我在想&#xff0c;我要通宵加班&#xff0c;做好自己最好&#xff0c;最期待完成的3.0&#xff0…