【项目构建】Gradle入门
本文适用:
- 不知道什么是项目构建,可以了解下
Ant
,Maven
,Gradle
的区别。- 知道什么是项目构建,了解
Ant
,Maven
,可以看到Gradle
是怎么做的。- 知道什么是项目构建,了解
Ant
,Maven
,Gradle
,可以帮本文审校下,多谢。
文章目录
- Gradle是什么
- Gradle项目结构
- 依赖关系
- 新旧版本
- 作用
- 指定Java版本
Gradle是什么
Ant
Ant是用Java编写的,可以用于包含Java
、C
、C++
等多种语言的构建工具,其中的典型优势是支持跨平台。
Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or C++ applications. More generally, Ant can be used to pilot any type of process which can be described in terms of targets and tasks.
Why another build tool
Maven
Maven使用项目对象模型
(POM)来管理项目依赖,根据约定胜于配置
(convention over configuration)理念,采取依赖坐标和冲突仲裁能多种方式来管理依赖和解决冲突,广泛应用于多种项目。
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
Gradle
Gradle 构建工具是一款快速、可靠、适应性强的开源构建自动化工具,拥有优雅、可扩展的声明式构建语言。最典型特征是可扩展。
Gradle is the open source build system of choice for Java, Android, and Kotlin developers. From mobile apps to microservices, from small startups to big enterprises, it helps teams deliver better software, faster.
Why Gradle?
Gradle项目结构
Gradle project structure
- Gradle directory to store wrapper files and more
- Gradle version catalog for dependency management
- Gradle wrapper scripts
- Gradle settings file to define a root project name and subprojects
- Gradle build scripts of the two subprojects - subproject-a and subproject-b
- Source code and/or additional files for the projects
settings.gradle:判断有哪些项目需要初始化,加载所有需要初始化的项目的。可以类比maven中的module管理。
build.gradle: 为每个项目创建project对象,可类比maven中的pom.xml。
依赖关系
新旧版本
compile
依赖关系已被弃用,被implementation
和api
替代;
provided
被compile only
替代;
apk
被runtime only
替代;
api
跟2.x版本的compile
完全相同。
作用
compileOnly
:只在编译时有效,不会参与打包 可以在自己的moudle中使用该方式依赖一些比如com.android.support,gson这些使用者常用的库,避免冲突。runtimeOnly
:只在生成apk的时候参与打包,编译时不会参与,很少用。testImplementation
:只在单元测试代码的编译以及最终打包测试apk时有效。debugImplementation
:只在debug模式的编译和最终的debug apk打包时有效releaseImplementation
:仅仅针对Release 模式的编译和最终的Release apk打包。api
:会把依赖库传给使用者,使用者的项目External Libraries 中能够看的见。可以在其他module使用,会参与打包。implementation
:当其他模块依赖此模块时,此模块使用implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。
指定Java版本
project
的java运行版本,不是本地java版本
以下是如何在build.gradle文件中配置:
应用Java插件
plugins { id 'java'
}
指定版本
sourceCompatibility = '11' // 源代码兼容版本
targetCompatibility = '11' // 目标字节码兼容版本
相关文章:

【项目构建】Gradle入门
本文适用: 不知道什么是项目构建,可以了解下Ant,Maven,Gradle的区别。知道什么是项目构建,了解Ant,Maven,可以看到Gradle是怎么做的。知道什么是项目构建,了解Ant,Maven&…...
Electron -- Electron应用主要核心(二)
Electron 应用主要由以下几个核心组成部分构成: 主进程(Main Process): Electron 应用的入口点是主进程,通常是 main.js 文件。它负责管理应用的生命周期,包括创建窗口、处理系统事件和应用更新等。主进程可…...

【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解
前言 🌟🌟本期讲解关于HTMLCSSJavaScript的基础知识,小编带领大家简单过一遍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …...

git命令恢复/还原某个文件、删除远程仓库中的文件
有时刚创建的远程仓库,可能无意中把一些没用的文件上传到仓库,本文介绍一下怎么删除这些文件。 一、git命令恢复某个文件 第一步:拉取最新代码 git pull 第二步: 查看git 修改的文件状态 git status 第三步:查看…...

二十一、Ingress 进阶实践
架构参考 使用hostnetwork,推荐的方式,使用单独的物理服务器,不部署业务pod的主机。 一、Ingress Nginx Controller 安装 采用helm的安装方式,进行部署。 官网地址: https://kubernetes.github.io/ingress-nginx/deploy/ github地址: https://github.com/kubernetes/in…...
ES学习Promise对象(九)
这里写目录标题 一、概念二、示例基本使用使用 Promise 对象封装Ajaxthen() 方法catch() 方法 一、概念 简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。Promise 是一个对象,Promise 提供统一…...

寻找适合小户型的开源知识库open source knowledge base之路
寻找一个开源的知识库,为了把以前花很多时间收集的信息或是项目/课程资料放到一个容易归类和管理的私有自主系统中,以便更容易查阅,花更少时间收集、对比版本及分享等一系列管理工作,同时确保在需要时可以相对快速找到有用的资料&…...

Linux高级--2.6 网络面试问题
tcp 与 udp的区别 1.tcp 是基于连接的 UDP是基于数据包 2.处理并发的方式不通 a.tcp用epoll进行监听的 b. udp是模拟tcp的连接过程,服务端开放一个IP端口,收到连接后,服务端用另一个IP和端口发包给客户端。 3.tcp根据协议MTU黏包及…...
在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc
在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc 📖 前言 在 CentOS 7 上使用 NVM 安装 Node.js 后,可能会遇到如下问题: node: /lib64/libm.so.6: version GLIBC_2.27’ not found (required by node) node: /lib64/libc.so.6:…...

音视频入门基础:MPEG2-TS专题(20)——ES流简介
《T-REC-H.222.0-202106-S!!PDF-E.pdf》第27页对ES进行了定义。ES流是PES packets(PES包)中编码的视频、编码的音频或其他编码的比特流。一个ES流(elementary stream)在具有且只有一个stream_id的PES packets序列中携带࿱…...

五子棋小游戏设计(Matlab)
基于Matlab的五子棋小游戏设计 (完整源码运行呈现的GUI界面) (完整的设计说明报告) 需要请随时联系博主,博主基本都在线,能秒回! 随着计算机技术的发展,将传统棋类游戏与编程技术…...
基于Pycharm与数据库的新闻管理系统(3)MongoDB
pip3 install pymongo 1.连接到MongoDB数据库 文件地址:db/mongo_db.py 从 pymongo 模块中导入 MongoClient 类;创建 MongoClient 的一个实例,该实例尝试使用提供的MongoDB连接字符串连接到MongoDB服务器。 from pymongo import MongoClie…...
WebRtc webrtc-streamer部署
文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 WebRtc webrtc-streamer 部署 docker run -p 8000:8000 -it mpromonet/webrt…...

CVPR-2024 | 具身导航模型大一统!NaviLLM:学习迈向具身导航的通用模型
作者:Duo Zheng, Shijia Huang, Lin Zhao, Yiwu Zhong, Liwei Wang 单位:香港中文大学,上海人工智能实验室,感知与交互智能中心 论文链接:Towards Learning a Generalist Model for Embodied Navigation(…...

CAN201 Introduction to Networking(计算机网络)Pt.2 传输层
文章目录 3. Transport Layer(传输层)3.1 Multiplexing and demultiplexing(多路复用和多路分解)3.2 Connectionless transport:UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…...

git仓库多人协作新建分支 合并到主分支流程详解
在多人协作的 Git 仓库中,新建分支并最终将其合并到主分支的流程是为了实现团队协作、提高代码的可管理性、确保代码质量,并且避免多人同时修改同一部分代码导致冲突。以下是这个流程的目的和具体步骤。 目录 1. 在 master 上新建一个分支 2. 进行功能…...

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】
🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...

【时间之外】IT人求职和创业应知【74】-运维机器人
目录 OpenAI最强推理模型o3发布,AGI测试能力暴涨 英伟达宣布收购以色列AI初创企业Runai 汤姆猫首款AI机器人产品明日发售 心勿贪,贵知足。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如…...

高阶:基于Python paddleocr库 提取pdf 文档高亮显示的内容
预览 第1步:理解基本结构和导入必要的库 # 1. 首先导入需要的库 import os # 用于处理文件和路径 import cv2 # 用于图像处理 import numpy as np # 用于数值计算 from paddleocr import PaddleOCR # 用于文字识别 from pdf2image import convert_from_path #…...
STM32项目之环境空气质量检测系统软件设计
目录 前言一、软件需求概述二、需求实现思路1.软件开发工具准备2.温湿度实时监测功能3.空气质量实时监测功能(目前硬件没有买该模块,暂未实现)4.实时时间功能5.视觉、听觉报警功能6.WIFI云平台连接,远程查看数据功能(待…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...