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,一经查实,立即删除!

相关文章

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

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

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

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

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…

针对新手的Java EE7和Maven项目-第4部分-定义Ear模块

从前面的部分恢复 第1部分 第2部分 第3部分 我们正在恢复第四部分&#xff0c;目前我们的简单项目有 Web Maven模块&#xff08;战争&#xff09; 一个ejb模块&#xff08;ejb&#xff09;&#xff0c;其中包含我们的无状态会话bean&#xff08;EJB 3.1&#xff09; 第二…

最大公因数和最小公倍数

一丶 最大公因数求法&#xff1a;辗转相除法(也称欧几里得算法)原理: 二丶最小公倍数求法&#xff1a;两个整数的最小公倍数等于两整数之积除以最大公约数1 #include <iostream>2 3 using namespace std;4 5 //辗转相除法(欧几里得算法)6 7 int gcd(int a, int b)8 {9…

css实现div内一段文本的两端对齐

在一个固定宽度的div内&#xff0c;使得P标签内的文本两端对齐&#xff1a; text-align: justify;text-justify:inter-ideograph; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>justify</title>…

QT学习三 标准对话框 QMessageBox

QMessageBox内置了几种static方法,例如 QMessageBox::question() 返回值:StandardButton 参数:QWidget * 父窗口&#xff0c;标题名&#xff0c;内容&#xff0c;按钮 YES|NO,默认选中按钮) 示例: 1 #include "mainwindow.h"2 #include <QApplication>3 #incl…

react学习笔记2

1.build文件介绍 &#xff08;1&#xff09;react.js 是react的核心库 &#xff08;2&#xff09;react-dom.js 提供与DOM相关功能 &#xff08;3&#xff09;browser.js 是将JSX语法转为javascript语法 2.组件的继续学习 注意&#xff1a;组件的第一个字母必须大写&…

HOW-TO:带有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler

Quartz Scheduler是Java世界中最流行的调度库之一。 过去&#xff0c;我主要在Spring应用程序中使用Quartz。 最近&#xff0c;我一直在研究将在云中部署的JBoss 7.1.1上运行的JEE 6应用程序中的调度。 我考虑的一种选择是Quartz Scheduler&#xff0c;因为它提供了与数据库的集…

C语言使用scanf()函数时,%c前面和后面分别加上空格后的结果

在使用scanf()读取输入的字符时&#xff0c;当转换说明为%c时&#xff0c;"%c"、" %c"、"%c " 这三种不同的写法&#xff0c;对数据读取的结果有什么影响吗&#xff0c;答案是肯定的&#xff0c;%c 加不加空格&#xff0c;空格在前还是在后&am…

Python -- 自动导入所需要的模块

try: import xlwtexcept ImportError as e:   import os   print(e)   os.system("pip install xlwt")转载于:https://www.cnblogs.com/xlx12138/p/10551894.html

借助Apache Hadoop大规模扩展Apache Solr实时实时索引

播客的第22集是与Patrick Hunt的谈话 我们讨论了Apache Solr&#xff08;上游&#xff09;中的新工作&#xff0c;使它可以在Apache Hadoop上工作。 Solr支持将其索引和事务日志文件写入和读取到HDFS分布式文件系统。 这不使用Hadoop Map-Reduce处理Solr数据&#xff0c;而是仅…

linux查看用户、创建用户、设置密码、修改用户、删除用户命令

查看用户 tail -1 /etc/passwd tail -1 /etc/shadow id alex echo 123 |passwd --stdin alex # 设置密码&#xff0c;不需要交互[rootlocalhost ~]# tail -l /etc/passwd rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS …

去除git版本控制

命令&#xff1a;find . -name ".git" | xargs rm –Rflinux $ find . -type d -iname __pycache__ -exec rm -rf {} \;转载于:https://www.cnblogs.com/gispathfinder/p/10555347.html

如何在Java中找到整数的质因数–因式分解

编程课程中的常见家庭作业/任务之一是关于Prime Factorization。 要求您编写一个程序以找到给定整数的素因子 。 一个数字的质数因子是将精确地除以给定数字的所有质数。 例如&#xff0c;35的素数因子分别是7和5&#xff0c;它们本身都是素数&#xff0c;并且精确地除以35。上…

Arduino Serial系列函数 有关print read 的总结

总结一下 在学习arduino srial函数时 的几个知识点&#xff1a; /*** 汇总一下Serial.print输出的一些情况&#xff0c;后面部分要和Serial.read配合使用&#xff1b;* 1. print 输出字符 和int数的结果&#xff0c;* 2. print 输出字符串和一连串的数字* 3. read 读取一个字符…

C#经典名著:《C#入门经典》(第4版)

博客园专题&#xff1a;http://book.cnblogs.com/zt/begin_csharp/ 作  者&#xff1a; &#xff08;美&#xff09;沃森&#xff08;Watson&#xff0c;K.&#xff09;&#xff0c;&#xff08;美&#xff09;内格尔&#xff08;Nagel&#xff0c;C.&#xff09; 等著&#…

您必须学习Java 8的函数式编程吗?

我最近一直在研究Java 8&#xff0c;并掌握了Manning出版的“ Java 8 In Action” 。 让我印象深刻的第一件事是Java 8的独特销售主张是函数式编程。 函数现在是一流的变量&#xff0c;您可以像int或String一样在代码中传递它们。 这是一个很大的变化。 近年来&#xff0c;功能…