新一代的构建工具Gradle

Unity2021.3.35f1配置安卓APK发布环境 2.在【Platform development】【Android】【Getting started with Android】【Android environment setup】中查看SDK、NDK、JDK版本。1.在Unity3d中点击菜单【Edit】【Preferences】,在External Tools中可以看到Android平台需要配置JDK、SDK、NDK、Gradle。对应的版本需要在官方文档中查看。打开Android Studio,点击菜单【Tools】 【SDK Manager】 阅读详情

Gradle是什么?

一个开源的项目自动化构建工具, 建立在apache ant和maven的基础上, 并引入基于Groovy的特定领域语言(DSL), 不再使用xml形式管理构建脚本.

构建工具的发展阶段: Ant --> Maven --> Gradle

准备工作

① 安装gradle

② 配置环境变量, 新建key为GRADLE_HOME, value为gradle的路径, 再将gradle下的bin目录配置到path路径下

基本介绍

Groovy是什么?

    Groovy是用于Java虚拟机的一种敏捷的动态语言, 它是一种成熟的面向对象的编程语言, 既可以用于面向对象编程, 又可以用作纯粹的脚本语言, 使用该种语言不必编写过多的代码, 同时又具有闭包和动态语言中的其他特性.

与Java的比较

    ● Groovy完全兼容Java语法

    ● 分号是可选的

    ● 类/方法默认是public的

    ● 编译器给属性自动添加getter/setter方法

    ● 属性可以直接用点号获取

    ● 最后一个表达式的值会被作为返回值(可以不写return)

    ● == 等同于 equal(), 不会报空指针异常

高效的Groovy特性

    ● assert语句

    ● 可选类型定义

    ● 可选的括号

    ● 字符串

    ● 集合API

    ● 闭包

创建一个小例子(idea2018)

① new Project

 ② next

③ next

④ next --> finish

⑤ 选择Groovy视图

 ⑥ 编写代码

深入了解

Groovy的一些基本语法

//groovy的高效特性
//1.可选的类型定义
def version = 1  //def类似于js中的var(弱定义)

//2.assert
//assert version == 2  //失败, 因为version是为1

//3.括号是可选的
println(version)  //结果是1
println version  //结果还是1

//4.字符串
def s1 = 'idea'  //仅仅是一个字符串
def s2 = "idea"  //可以通过${}的形式插入其他变量, 如
def s4 = "my gradle version is ${version}"  //插入变量
def s3 = '''this is
a
grovvy programming'''  //可以换行


println s1
println s3
println s4

//5.集合API
//list
def buildTools = ['ant', 'maven']  //默认是ArrayList类型的集合
buildTools << 'gradle'  //追加
assert buildTools.getClass() == ArrayList
assert  buildTools.size() == 3

//map
def buildYears = ['ant':2000, 'maven':2004]
buildYears.gradle = 2009  //添加进map

println buildYears.ant
println buildYears['gradle']
println buildYears.getClass()  //默认是LinkedHashMap

//闭包
//简单讲就是一个代码块, 类似方法, 参数可有无, 可以被赋值给一个变量, 也可以被当成一个参数传递给一个方法
//在Groovy中闭包的常见使用的方式
def c1 = {  //定义闭包c1
    v ->
        print v
}

def c2 = {  //定义闭包c2
    print 'hello'
}

def method01(Closure closure){
    closure('param  ==>  ')
}

def method02(Closure closure){
    closure()
}

method01(c1)
method02(c2)

输出

1
1
idea
this is
a
grovvy programming
my gradle version is 1
2000
2009
class java.util.LinkedHashMap
param  ==>  hello

构建脚本

构建块: Gradle构建中的两个基本概念是项目(project)和任务(task), 每个构建至少包含一个项目, 项目中包含一个或多个任务, 在多项目构建中, 一个项目可以依赖于其他的项目, 类似的, 任务可以形成一个依赖关系图来确保他们的执行顺序

项目(project)

● groupId name(artifactId) version

● apply(指定应用某个插件) dependencies(声明依赖的jar / 其他的项目) repositories(声明具体的仓库) task(声明项目中的任务)

● ext gradle.properties

任务(task)

● 包括任务动作和任务依赖, 任务动作定义了一个最小的工作单元, 可以定义依赖于其他任务, 动作序列和执行条件

●  dependsOn: 声明任务依赖

● doFirst doLast(<<): 在动作列表的最前边添加一个动作 / 在任务列表的末尾添加一个动作

自定义任务

由于ide工具创建gradle项目时是没法自动生成对应的目录的(src/main/java; src/main/resources...), 所以可以自己自定义一个任务来生成这些文件夹

自定义生成文件夹的任务

def createDir = {
    path ->
        File dir = new File(path)
        if(!dir.exists()){
            dir.mkdirs()
        }
}

task makeJavaDir() {
    def paths = ['src/main/java', 'src/main/resources', 'src/test/java', 'src/test/resources']
    doFirst{
        paths.forEach(createDir)
    }
}

 

测试结果

构建生命周期

初始化(初始化将要参与到构建中的项目) --> 配置(根据配置代码<除了动作代码之外都是配置代码>生成task的依赖顺序和执行顺序) --> 执行(执行动作代码) --> 完成构建

● task <任务名>{project.version = '1.0'}, 那么该段代码在配置阶段就会被执行

● task <任务名> doLast{<添加的内容>}, 那么该段代码在动作阶段就会被执行

● 配置代码不能放在动作代码的部分, 否则无法完成构建

依赖管理

自动化的依赖管理可以明确依赖的版本, 可以解决因传递性依赖带来的版本冲突

● 引入规则

    ① compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.3.Final'  //引入编译时的jar

         testCompile group: 'junit', name: 'junit', version: '4.12'  //引入测试编译时的jar

    ② compile 'ch.qos.logback:logback-classic:1.2.1'  //第二种引入编译时的jar的方式(推荐使用)

● 工件(jar包)坐标(groupId, name<artifactId, version>)

● 常用仓库: mavenCentral(maven的中央仓库) / jcentral(Java和Android的中央仓库)

repositories {
    maven{
        url ''  //指定私服
    }
    mavenLocal()  //指定本地仓库
    mavenCentral()  //指定maven的中央仓库
}

● 依赖传递性: 运行时阶段扩展于编译阶段

dependencies {
    compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

● 版本冲突

    ① 查看依赖报告

    ② gradle会默认指定一个最高版本的jar, 可以修改默认策略

    ③ 排除传递性依赖

compile ('ch.qos.logback:logback-classic:1.2.1'){
    exclude group:'<groupId>', module:'<artifactId>'
}

    ④ 强制一个版本

configurations.all{

    resolutionStrategy{

        failOnVersionConflict()  //如果出现版本冲突则报错

        force 'groupId:artifactId:version'  //强制指定具体版本的依赖

    }

}

编译插件-gradle3.3 Androidstudio3.0以下都使用的编译插件,如果不能通过谷歌下载,这里是不错的选择哦 立即下载

相关推荐

稳定双共轭梯度法BiCGSTAB流程

稳定双共轭梯度法BiCGSTAB流程

abner361的博客 1154

基于Unity的Android开发(Unity与Android的交互与嵌入)

由于Unity与Android交互开发步骤繁琐,且容易出错,本篇文章以具体项目为样例,以便形象化展示。用到的Unity版本为2021.3.19,AS版本为2022.3,Android真机Redmi K30 Pro。

2301_78097080的博客 4077

用Arduino和FS-i6X遥控器,从零开始打造你的第一只仿生扑翼蝴蝶(附完整代码解析)

本文详细介绍了如何利用Arduino和FS-i6X遥控器从零开始制作仿生扑翼蝴蝶,包括硬件准备、电路连接、代码解析和调试技巧。通过完整的代码示例和参数说明,帮助读者快速掌握仿生机器人的制作要点,实现蝴蝶的自然飞行效果。

weixin_28727975的博客 309

使用gradle编译安卓APK包gradlew打包 gradle打包

一、安装JDK在安装Gradle之前需要先安装JDK,由于安装的是Gradle是4.4所以需要安装JDK1.8。之前编译总是提示如下错误就是由于先安装的jdk1.7然后安装的1.8造成的,在Gradle启动文件中使用了JAVAHOME并且写成了1.7的目录,所以无论怎么配置都是最后脚本中的生效,所以提示版本不对。1、安装jdk2、设置环境变量设置 JAVA_HOME设置path3、测试配置是否正确执行如下命令后提示java1.8即表示成功二、安装Gradle1、下载Gradle2、解压缩。

chuyouyinghe的专栏 3014

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

军事上的演练,是除了实战以外最能检验军队战斗力的一种考核方式,他可以模拟面对外部势力的攻击时候,如何更好的去维护国家和主权的安全。同样的,在网络上面,真实环境下的网络攻防演练也是检验一个单位,企业网络防御能力,发现潜在危险最好的方法。1.政策要求2安全威胁驱动当前,我国关键信息基础设施面临的网络安全形势严峻复杂,网站平台大规模数据泄露事件频发,生产业务系统安全隐患突出,甚至有的系统长期被控面对高级持续性的网络攻击,防护能力十分欠缺。目前,我国面临的网络安全威胁主要有以下几点。

wxh的博客 1574

R语言影像组学实战:从医学图像到预测模型的完整流程(附代码)

本文详细介绍了使用R语言进行影像组学分析的完整实战流程。从环境搭建、数据准备,到医学图像的特征提取与筛选,再到利用机器学习构建预测模型并进行评估,提供了清晰的步骤和可运行的R代码示例,帮助研究者和数据分析师掌握从医学图像到临床预测模型的核心技术。

qsc901234的博客 732

Gradle 详解

原文地址:深入理解Android(一):Gradle详解-InfoQ 备用地址:Gradle史上最详细解析 - AndroidM - 博客园 以下内容为复制-粘贴,建议看原文。 编者按:随着移动设备硬件能力的提升,Android 系统开放的特质开始显现,各种开发的奇技淫巧、黑科技不断涌现,InfoQ 特联合《深入理解 Android》系列图书作者邓凡平,开设深入理解Android专栏,探索Android 从框架到应用开发的奥秘。 Gradle 是当前非常“劲爆”的构建工具。本篇文章就是专为讲解 G.

U___U的专栏 3639

投稿前利用GPT-5.5给论文做一次深度校对,投稿命中率翻倍!

3)一致性:请对比摘要的结论与正文(如果我也提供了正文),确保完全一致。请严格检查结果部分,确保客观性:1)纯粹性检查:标出所有包含“为什么”(解释)或“这意味着什么”(暗示)的主观语句,这些应移至讨论部分。请你帮我评估讨论部分的深度:1)解释与对比:检查每一项主要结果是否都解释了原因,并引用了前人研究进行对比(一致或相悖)。我见过太多人把校对理解为检查错别字了,实际上,校对要看的远不止这个,像逻辑是否连贯、术语是否前后一致、图表有没有被正确引用等等的这些细节,往往决定了文章是秒被拒,还是能顺利进入外审。

智能AI让学术科研更容易 412

新一代构建工具Gradle入门知识简介

Gradle入门 构建工具进化史 第一代 Ant 2000 第二代 Maven 2004 第三代 Gradle 2012 ANT ant是出现最早的工具, 它在一些方面跟Make工具很相像。它在2000年发布,并在短时间内成为了最流行的Java项目构建工具。 它非常简单易学, 人们不需要专门去学习他, 就可以拿来使用。它基于编程的思想设计。 后来发布的版本, 开始支持插件。 ...

hijunmeng的专栏 882

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3976

YOLOv11改进 - 卷积Conv | GCNet之金箍棒块GCBlock : 重参数化捕获全局依赖 | CVPR 2025

文介绍了GCBlock在YOLOv11中的结合应用。GCBlock是GCNet的核心组件,能高效捕获特征图中的全局依赖关系,融合了非局部网络和挤压 - 激励网络的优势,降低计算成本并保障模型性能。其遵循“上下文建模 - 特征变换 - 特征融合”框架,通过全局平均池化、全连接层等操作生成注意力权重。我们将GCBlock集成进YOLOv11,替代原有的部分卷积模块,实现更高效的全局上下文建模。实验证明,YOLOv11-GCBlock在目标检测任务中表现出色,展现了GCBlock在深度学习中的广泛应用前景。

魔改工程师的博客 906

新一代构建工具Gradle

作者 :乐百川来源:toutiao.com/i6824937779193971207相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Mave...

无敌码农 273

第3.4章 机器人第三方库实战总结(四):G2O优化库从入门到实战(附SLAM实例代码)

自定义边同样是满足复杂应用需求的重要手段。自定义边时,需要明确边所连接的顶点类型以及边所表示的误差项的计算方式。假设我们要定义一条边,用于约束两个上述自定义顶点之间的相对位姿和传感器偏移量关系。我们可以这样定义边类:public:// 计算误差// 计算雅可比矩阵// 读盘和存盘函数,这里暂不实现。

行知SLAM 358

【Gradle:新一代构建工具】学习笔记 0 Gradle视频介绍

【Gradle:新一代构建工具】学习笔记 0 Gradle视频介绍

代码改变世界 297

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.15 Gradle插件简介

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.15 Gradle插件简介

代码改变世界 402

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.5 Gradle中的任务执行

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.5 Gradle中的任务执行

代码改变世界 822

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.7 Gradle中任务的类型

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.7 Gradle中任务的类型

代码改变世界 482

新一代的自动化构建工具 Gradle

文章目录项目自动化介绍构建工具的作用主流的构建工具有那些?Gradle 介绍Gradle 快速入门准备安装Groovy 介绍基于 Gradle 创建 Java 项目Groovy 高效特性第一个 Gradle 项目第一个 Gradle 的 Web 项目Gradle 基本原理构建脚本自定义任务构建生命周期依赖管理解决版本冲突Gradle 深入实战多项目构建配置子项目多项目构建实战自动化测试发布Grad...

Sunshine.wz的博客 1151

【Gradle:新一代构建工具】学习笔记 1 Gradle入门 1.4 Gradle项目目录结构

【Gradle:新一代构建工具】学习笔记 1 Gradle入门 1.4 Gradle项目目录结构

代码改变世界 570

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.14 Gradle中的依赖冲突及解决方案

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.14 Gradle中的依赖冲突及解决方案

代码改变世界 2239

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.1 Groovy简介

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.1 Groovy简介

代码改变世界 434

【Gradle:新一代构建工具】学习笔记 1 Gradle入门 1.5 Gradle创建第一个项目

【Gradle:新一代构建工具】学习笔记 1 Gradle入门 1.5 Gradle创建第一个项目

代码改变世界 667

【Gradle:新一代构建工具】学习笔记 1 Gradle入门 1.6 修改maven下载源

【Gradle:新一代构建工具】学习笔记 1 Gradle入门 1.6 修改maven下载源

代码改变世界 803

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.4 Gradle中任务的依赖方式

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.4 Gradle中任务的依赖方式

代码改变世界 481

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.24 Gradle中的项目发布

【Gradle:新一代构建工具】学习笔记 3 Gradle进阶说明 3.24 Gradle中的项目发布

代码改变世界 455
上一篇: Hibernate注解开发之关联映射的注解
下一篇: Nginx知识点整理
C8WATER
博客等级 码龄10年 58粉丝 128原创
评论 25
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值