难点消除,Android自动化营造

在 Eclipse EE Oxygen 中创建 Gradle Project的时候

布局自定义的Gradle wrapper distributionUrl

当使用AndroidStudio第一回成立项指标时候,可能退换wrapper版本的时候,必要从Gradle服务器去下载相应版本的的实践文书。不过由于互联网的难点,导致长日子卡顿,不只怕直接进去的窘迫情景。

斩草除根此种的不二秘技不外呼二种,当和姑件和互联网文件(特出的互联网为前提)

  1. 本土文件

    事先将gradle文件下载,能够是gradle-x.x-all.zip,
    也足以是gradle-x.x-bin.zip,
    将下载好的文书拷贝到gradle/wrapper/目录下,

    ###### gradle-wrapper.properties

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=gradle-4.2-bin.zip
    
  2. 接纳网络文件措施丰盛。(即设置Gradle distribution镜像)

    ###### gradle-wrapper.properties

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=http\://localhost:8081/nexus/content/repositories/gradle-distribution/gradle-4.2-bin.zip
    

    <font color=#f00>注:冒号前边要求丰硕转义符” </font>

简介

自动化打包指标:使打包脱离开辟职员和个人Computer;收缩出错率;打包流程标准化。

转发请标注出处:
本文来源【赵彦军的博客】

并发如下错误:

如何在Sonartype Nexus上配置Gradle distribution镜像

  1. Add –> Proxy repsitorynew

    澳门葡京备用网址 1

    sonartype_nexus_gradle_mirror.jpg

  2. 设置 gradle-wrapper.properties

        distributionUrl=http\://localhost:8081/nexus/content/repositories/gradle-distribution/gradle-4.2-bin.zip
    
  3. 应用命令行实施

    gradlew --gradle-distribution-url "http\://localhost:8081/nexus/content/repositories/gradle-distribution/gradle-4.2-bin.zip" clean build
    

亟需设置的条件

JDK、Android SDK、Jenkins、Gradle、Git
此番开始展览情形搭建的管理器碰着:OS(拾.1一.4)

一:Gradle 是什么

  • Gradle是二个根据Apache Ant和Apache Maven概念的类别自动化营造筑工程具。
  • 它应用一种基于Groovy的一定领域语言(DSL)来声称项目安装,摒弃了依照XML的各类繁琐配置。面向Java应用为主。
  • 日前其扶助的言语限于Java、Groovy、Kotlin和Scala,安插未来将协助更加多的语言。基于
    groovy 脚本营造,其 build 脚本使用 groovy 语言编写。

关于 gradle 相关应用,能够运动 :Android
Gradle使用总计

org.gradle.tooling.GradleConnectionException: Could not install Gradle
distribution from
”.

一.条件设置

根本说下Mac下的Jenkins遇到,其余情状请自行百度。
命令行推行:
#brew install jenkins
试行后结果:

澳门葡京备用网址 2

jenkins_install_success.png

二:groovy 是什么

Groovy是壹种动态语言,它和Java类似(算是Java的晋级版,可是又颇具脚本语言的风味),都在Java虚拟机中运维。当运营Groovy脚本时它会先被编写翻译成Java类字节码,然后经过JVM虚拟机推行这些Java字节码类。

有关 groovy 相关文化,移步到那边:Groovy
使用完全剖判

 壹、难点讲述:

二.按安装提示

应当是开机运行的意趣,也得以不实行该命令,影响暂不清楚。
要实行的话依旧在命令行运转:
#ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents

三:Gradle 的 Project 和 Tasks

历次构建(build)至少由3个project构成,3个project
由一到四个task构成。各类task代表了营造进度个中的二个原子性操作,举例编写翻译,打包,生成javadoc,宣布等等这一个操作。

gradle : 二个 project 包蕴三个 task,三个 task 包蕴七个 Action

project 
                  -- task1 (Action1、Action2...)
                  -- task2 (Action1、Action2...)
                  -- ... 

澳门葡京备用网址 3

3.启动Jenkins

运作命令:
#jenkins
难点消除,Android自动化营造。会输出一些新闻:包含Jenkins.war所在目录等,今年理应就是设置还要运维成功了

澳门葡京备用网址 4

jenkins_澳门葡京备用网址 ,start_success.png

四:自定义 Task

  • 格式:

 task 任务的名字 {
    //do some things
 }
  • 例子

build.gradle

//定义 task , 名字 hello 
task hello{
    println "hello world"
}

//定义 task,名字 hello 
task(hello2){
    println "hello world2"
}

//定义 task,名字 hello3 
task ('hello3'){
    println "hello world3"
}
  • 在终端运转 gradle 命令

//执行 hello task
gradlew hello

//执行 hello2 task
gradlew hello2

//执行 hello3 task
gradlew hello3

澳门葡京备用网址 5

四.验证运营是还是不是真正成功了

浏览器张开:http://localhost:8080

即使能见到左上角的老前辈头,验证已经打响运维了。

澳门葡京备用网址 6

verify_start_success.png

五:创建Action

在上头的举个例子中,是三个业余的 task , 说非正式是因为创设的 task 里面未有action 。task 本质上又是由一组被逐一执行的 Action
对象构成,Action其实是一段代码块,类似于Java中的方法。

澳门葡京备用网址 7

5.在Jenkins中设置插件

系统一管理理 > 管理插件 > 可选插件
1.gradle:Gradle plugin,对Gradle的支持;
二.Gitlab:GitLab Plugin,因为代码在由GitLab处理。
设置或然要求一些时光,成功后重启Jenkins(在开发银行Jenkins的命令行窗口ctrl+c,然后运营服务,并刷新浏览器)。

创建 Action 相关 API

 //在Action 队列头部添加Action
 Task doFirst(Action<? super Task> action);
 Task doFirst(Closure action);

 //在Action 队列尾部添加Action
 Task doLast(Action<? super Task> action);
 Task doLast(Closure action);

 //已经过时了,建议用 doLast 代替
 Task leftShift(Closure action);

 //删除所有的Action
 Task deleteAllActions();

二、难点解决

6.布署Jenkins中的碰着变量

系统管理 > 系统装置
1.Android SDK

澳门葡京备用网址 8

Android_SDK_config.png

2.JDK

澳门葡京备用网址 9

JDK_config.png

3.Git

澳门葡京备用网址 10

git_config.png

4.Gradle

澳门葡京备用网址 11

Gradle_config.png

留意:路径遵照实际的情状设置

小例子

build.gradle

//创建一个名字为hello的 task 
task hello {

    //创建一个 Action , 添加到 Action 列表的头部
   doFirst(new Action<Task>() {
       @Override
       void execute(Task task) {
           println "action1++++++++++"
       }
   })

    //创建一个 Action , 添加到 Action 列表的头部
    doFirst {
        println "action2++++++++++"
    }

}

在 Action 列表中增加了 七个 Action , Action 列表如下图所示:

澳门葡京备用网址 12

运行 hello task : gradle hello

运作结果:

action2++++++++++
action1++++++++++

因为计算机此前,安装过 Android Studio , 计算机中 有 .gradel 文件夹,里面有
gradle 4.一

7.开立工程,并铺排

点击左边新建,创立八个新的要求被创设的工程;
点击OK之后成功成立并自行跳到工程对应的配备页。

leftShift 说明

leftShift 的机能和 doLast 同样,在action
列表尾巴部分增加二个Action,只可是将来过时了,官方提议用 doLast
代替。上边举个小例子:

build.gradle

task hello {
    //在 Action 列表尾部添加一个 Action 
    leftShift {
        println "+++++"
    }
}

leftShift 还会有壹种简单写法,用 << 代替, 如下所示:

build.gradle

task hello <<{
    //在 Action 列表尾部添加一个 Action 
    println "+++++"
}

那就是说难题来了,task 中的 Action 在如哪一天候实行?

将如下选取,修改为 4.1

须要配备:a.被塑造的工程源码配置;b.Gradle创设配置;

6:Gradle 生命周期

澳门葡京备用网址 13

可选配置:c.构建后操作,如失利发送邮件;d.营造触发器等;

重在说下必备的安顿:

一.开始化阶段

会去读取根工程中 setting.gradle 中的 include
新闻,决定有哪多少个工程进入创设,创制 project
实例,举个例子上边有八个工程: include ‘:app’, ‘:lib1’, ‘:lib贰 。

能够成功的创导工程:

a.被营造的工程源码配置;

源码配置:景况一.代码在微型Computer,未有上传到git之类的代码托管服务器;
动静二.代码在Git只怕GitLab服务器中;

二.配置阶段

会去实施全体工程的 build.gradle 脚本,配置
project对象,一个对象由多少个职分组成,
此阶段也会去成立、配置task及有关音讯。

澳门葡京备用网址 14

针对景况一 是将本地下工作程路线配置为自定义的行事空间

澳门葡京备用网址 15

local_project_config.png

3.周转阶段

基于gradle命令传递过来的task名称,推行有关正视职责。Task 的 Action
会在这些等第推行。

点击 Finish 后,出现如下:

针对情形二索要配备 源码管理 > Git > Repositories

澳门葡京备用网址 16

git_project_config.png

7:创设 Task 的此外壹种方法

在上头疏解了创办 task 的主干方法,其实 gradle api
给大家提供了别样的点子创建 task ,上边讲明别的二种艺术。

  • tasks

build.gradle

//创建 hello2 task
tasks.create("hello2"){
    doFirst {
        println "hello2+++++"
    }
}
  • 自定义 DefaultTask 子类

class MyTask extends DefaultTask {

    @TaskAction
    void action(){
        println "action1+++++"
    }
}

//创建 hello3 task
task hello3 (type: MyTask){
    doLast{
       println "action2+++++"
    }
}

运行 hello3 task: gradlew hello3

输出

action1+++++
action2+++++

澳门葡京备用网址 17

b.Gradle创设配置;

选择Gradle版本;配置Gradle命令

澳门葡京备用网址 18

project_gradle_config.png

八: Task 依赖

澳门葡京备用网址 19

捌.即时构建

到这里关于Jenkins及对Gradle援助有关的富有的安排就截至了,回到首页进入工程下,点击左侧的立时创设就足以起来创设了。

附:
一.grade配置音信文件:
/Users/xxx/.jenkins/hudson.plugins.gradle.Gradle.xml
2.Android Studio升高为贰.0,营造时出现:Error:Gradle version 2.拾 is
required. Current version is 2.4. If using the gradle wrapper, try
editing the distributionUrl in …
化解难点:Jenkins增添gradle2.10的条件,增添措施同刚刚:配置Jenkins中的意况变量Gradle的布置表明
参考:http://android-er.blogspot.com/2016/04/errorgradle-version-210-is-required.html

1、dependsOn

build.gradle

task task1 << {
    println "我是task1----"
}

task task2 << {
    println "我是task2----"
}

//task2 依赖 task1, 执行task2之前先执行task1
task2.dependsOn task1

执行 task2

gradlew task2

实行职能

我是task1—-
我是task2—-

工程成立成功

2、mustRunAfter

澳门葡京备用网址 20

澳门葡京备用网址 21

 

两个 task 依赖

task task1 << {
    println "我是task1----"
}

task task2 << {
    println "我是task2----"
}

//task2 运行之前先运行task1
task2.mustRunAfter task1
  • 执行 task1 : gradlew task1

    我是task1—-

  • 执行 task2 : gradlew task2

    我是task2—-

  • 并且施行 task一、task2 : gradlew task1 task二

    我是task1—-
    我是task2—-

Donate捐赠

设若作者的文章支持了您,能够表彰笔者 壹 元,让本人继续写出更加好的开始和结果)

澳门葡京备用网址 22   澳门葡京备用网址 23

  (微信)                                        (支付宝)

微信/支付宝 扫一扫

 

多少个 task 相互信赖

build.gradle

task task1 << {
    println "我是task1----"
}

task task2 << {
    println "我是task2----"
}

task task3 << {
    println "我是task3----"
}

task2.mustRunAfter task1
task3.mustRunAfter task1
  • 执行 gradlew task1 task2 task3

    我是task1—-
    我是task2—-
    我是task3—-

  • 执行 gradlew task1 task3 task2

    我是task1—-
    我是task3—-
    我是task1—-

在产出语法争辩的图景下,注重关系产生闭环,编写翻译器会报错

task1.mustRunAfter task2
task2.mustRunAfter task1

澳门葡京备用网址 24

3、shouldRunAfter

多变重视关系可有可无。

build.gradle

task task1 << {
    println "我是task1----"
}

task task2 << {
    println "我是task2----"
}

task1.shouldRunAfter task2

运行: gradlew task1 task2

我是task2—-
我是task1—-

在产出语法争论的境况下,注重关系产生闭环,会活动打破闭环。不会报错

⑨:系统暗许 task

gradle 默许提供了过多 task 给我们选择,举例 copy、delete

1、copy

build.gradle

task 任务的名字 (type: Copy) {
    //action 
}
  • Api 介绍

//数据源目录,多个目录
public AbstractCopyTask from(Object... sourcePaths)  

//目标目录,单一
public AbstractCopyTask into(Object destDir) 

//过滤文件 包含
public AbstractCopyTask include(String... includes)

//过滤文件 排除
public AbstractCopyTask exclude(String... excludes)

//重新命名,老名字 新名字
public AbstractCopyTask rename(String sourceRegEx, String replaceWith)

//删除文件 Project 接口
boolean delete(Object... paths);

小例子:

  • 复制图片:单壹数据源

task copyImage(type: Copy) {
    from 'C:\\Users\\yiba_zyj\\Desktop\\gradle\\copy'
    into 'C:\\Users\\yiba_zyj\\Desktop'
}
  • 复制图片:多少个数据源

task copyImage(type: Copy) {
    from 'C:\\Users\\yiba_zyj\\Desktop\\gradle\\copy' , 
         'C:\\Users\\yiba_zyj\\Desktop\\gradle\\copy'

    into 'C:\\Users\\yiba_zyj\\Desktop'
}
  • 复制图片:过滤文件

只会复制后缀为 .jpg 的文书

task copyImage(type: Copy) {
    from 'C:\\Users\\yiba_zyj\\Desktop\\gradle\\copy'
    into 'C:\\Users\\yiba_zyj\\Desktop'
    include "*.jpg" 
}
  • 复制文件:过滤文件,重命名

task copyImage(type: Copy) {
    from 'C:\\Users\\yiba_zyj\\Desktop\\gradle\\copy'
    into 'C:\\Users\\yiba_zyj\\Desktop'
    include "*.jpg"
    exclude "image1.jpg"
    rename("image2.jpg","123.jpg")
}

文本覆盖规则

如出1辙文件覆盖

Copy 类的承继图

Copy (类)
   - AbstractCopyTask (抽象类)  (from、 into、 include、rename)
      -ConventionTask(抽象类)
       - DefaultTask (类)
        - AbstractTask (抽象类)
           - TaskInternal (接口)
            - Task(接口)        
              -Comparable<Task>, ExtensionAware(接口)
                -Project(接口)    (delete 方法)

2、Delete

  • 除去 Android 更目录的aaa 文件

build.gradle

task deleteFile(type: Delete) {
    //删除Android 更目录的aaa 文件
    delete '../aaa'  
}
  • 删除桌面上的文件

build.gradle

task deleteFile(type: Delete) {
    //删除系统桌面 delete 
    delete "C:\\Users\\yiba_zyj\\Desktop\\gradle\\delete"
}

十:小技巧

壹、自定义 task 的名字用驼峰命名法

build.gradle

task deleteFile{
    //do some things
}

运行

gradlew dF 等价 gradlew deleteFile

装进时候运行 gradlew assembleRelease,能够简写成 gradlew aR

2、常见的 gradlew 命令

查阅项目拥有暗中认可自带的 task,不包含自定义 task

gradlew tasks

翻看全体 task (暗许 task + 自定义task)

gradlew tasks –all

翻开有些 task 的连锁音讯,这个结果包罗了任务的渠道、类型以及描述音信等

gradlew help –task taskName

查看 gradle 版本

gradlew -version

三、给task 加多描述 description

task task1 << {
    description = "这是一段描述信息"
    println "我是task1----"
}

10一:Gradle 遭逢变量配置

在位置的介绍中,运转 task 的秘技是用 gradlew , 那大家怎么用 gradle
。假诺在极限运维 gradle 就能唤起
gradle 不是内部或外部命令,也不是可运行的程序或批处理文件。

'gradle' 不是内部或外部命令,也不是可运行的程序或批处理文件。

官方网址下载:

澳门葡京备用网址 25

下载达成后,笔者将核减包解压放在 d 盘的 soft 目录中。
遭逢变量

  • GRADLE_HOME

D:\soft\gradle-4.3-all

  • Path

    D:\soft\gradle-4.3-all\gradle-4.3\bin

参照他事他说加以考查资料

1、Android Gradle
必备实用技艺

2、Android
Gradle使用总括

3、Groovy
使用完全分析

4、深深领会 Android Gradle
详解


个人微时域信号:zhaoyanjun1贰五 , 招待关心
澳门葡京备用网址 26

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website