Gradle基础

文章目录

  • Gradle 项目目录结构
  • Gradle 创建第一个项目
  • Gradle 中的常用指令
  • 修改maven 下载源
  • Wrapper 包装器
    • GradleWrapper 的执行流程:
  • 在 idea 中创建普通java 工程

Gradle 项目目录结构

radle 项目默认目录结构和Maven 项目的目录结构一致,都是基于约定大于配置【Convention Over Configuration】。其完整项目目录结构如下所示:
在这里插入图片描述

Tips:
1. 只有war工程才有webapp目录,对于普通的jar工程并没有webapp目录
2. gradlew与gradlew.bat执行的指定wrapper版本中的gradle指令,不是本地安装的gradle指令哦。

Gradle 创建第一个项目

借助于 spring 脚手架创建gradle 第一个项目:https://start.spring.io/
在这里插入图片描述
查看生成的gradle 项目目录结构如下所示:
在这里插入图片描述
与上图对比会发现:总体的目录结构与上图说明的是一致的。

Gradle 中的常用指令

Gradle 常用命令说明:
在这里插入图片描述
需要注意的是:gradle 的指令要在含有build.gradle 的目录执行。

修改maven 下载源

Gradle 自带的Maven 源地址是国外的,该Maven 源在国内的访问速度是很慢的,除非使用了特别的手段。一般情况下,我们建议使用国内的第三方开放的Maven 源或企业内部自建Maven 源。
认识init.d 文件夹
我们可以在gradle 的init.d 目录下创建以.gradle 结尾的文件,.gradle 文件可以实现在build 开始之前执行,所以你可以在
这个文件配置一些你想预先加载的操作。
在这里插入图片描述
在init.d 文件夹创建init.gradle 文件

allprojects {repositories {mavenLocal()maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" } mavenCentral()}buildscript {repositories {maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' } maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' } maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }}}
}

拓展 1:启用init.gradle 文件的方法有:

  1. 在命令行指定文件,例如:gradle --init-script yourdir/init.gradle -q taskName。你可以多次输入此命令来指定多个init文件

  2. 把init.gradle文件放到 USER_HOME/.gradle/ 目录下

  3. 把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下

  4. 把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下


    如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个init脚本,会按拼音a-z顺序执行这些脚本,每个init脚本都存在一个对应的gradle实例,你在这个文件中调用的所有方法和属性,都会委托给这个gradle实例,每个init脚本都实现了Script接口。

拓展 2:仓库地址说明

mavenLocal(): 指定使用maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。如E:/repository,gradle 查找jar包顺序如下:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository

maven { url 地址},指定maven仓库,一般用私有仓库地址或其它的第三方库【比如阿里镜像仓库地址】。
mavenCentral():这是Maven的中央仓库,无需配置,直接声明就可以使用。
jcenter():JCenter中央仓库,实际也是是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访问,在新版本中已经废弃了,替换为了mavenCentral()。

总之, gradle可以通过指定仓库地址为本地maven仓库地址和远程仓库地址相结合的方式,避免每次都会去远程仓库下载依赖库。这种方式也有一定的问题,如果本地maven仓库有这个依赖,就会从直接加载本地依赖,如果本地仓库没有该依赖,那么还是会从远程下载。但是下载的jar不是存储在本地maven仓库中,而是放在自己的缓存目录中,默认在USER_HOME/.gradle/caches目录,当然如果我们配置过GRADLE_USER_HOME环境变量,则会放在GRADLE_USER_HOME/caches目录,那么可不可以将gradle caches指向maven repository。我们说这是不行的,caches下载文件不是按照maven仓库中存放的方式。
拓展 3:阿里云仓库地址请参考:
https://developer.aliyun.com/mvn/guide

在这里插入图片描述
在gradle 中的使用说明:
在这里插入图片描述

Wrapper 包装器

Gradle Wrapper 实际上就是对 Gradle 的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的 Gradle
问题。例如:把自己的代码共享给其他人使用,可能出现如下情况:

1. 对方电脑没有安装 gradle
2. 对方电脑安装过 gradle,但是版本太旧了

这时候,我们就可以考虑使用 Gradle Wrapper 了。这也是官方建议使用 Gradle Wrapper 的原因。实际上有了 Gradle Wrapper 之后,我们本地是可以不配置 Gradle 的,下载Gradle 项目后,使用 gradle 项目自带的wrapper 操作也是可以的。

那如何使用Gradle Wrapper 呢?
项目中的gradlew、gradlew.cmd脚本用的就是wrapper中规定的gradle版本。参见源码
而我们上面提到的gradle指令用的是本地gradle,所以gradle指令和gradlew指令所使用的gradle版本有可能是不一样的.

gradlew、gradlew.cmd的使用方式与gradle使用方式完全一致,只不过把gradle指令成了gradlew指令。
当然,我们也可在终端执行 gradlew 指令时,指定指定一些参数,来控制 Wrapper 的生成,比如依赖的版本等,如下:
在这里插入图片描述
具体操作如下所示 :
gradle wrapper --gradle-version=4.4:升级wrapper版本号,只是修改gradle.properties中wrapper版本,未实际下载
gradle wrapper --gradle-version 5.2.1 --distribution-type all :关联源码用

GradleWrapper 的执行流程:

  1. 当我们第一次执行 ./gradlew build 命令的时候,gradlew 会读取 gradle-wrapper.properties 文件的配置信息
  2. 准确的将指定版本的 gradle 下载并解压到指定的位置(GRADLE_USER_HOME目录下的wrapper/dists目录中)
  3. 并构建本地缓存(GRADLE_USER_HOME目录下的caches目录中),下载再使用相同版本的gradle就不用下载了4.之后执行的 ./gradlew 所有命令都是使用指定的 gradle 版本。如下图所示
    在这里插入图片描述
    gradle-wrapper.properties 文件解读:
    在这里插入图片描述
    注意:前面提到的 GRALE_USER_HOME 环境变量用于这里的Gradle Wrapper 下载的特定版本的gradle 存储目录。如果我们没有配置过GRALE_USER_HOME 环境变量,默认在当前用户家目录下的.gradle 文件夹中。
    那什么时候选择使用 gradle wrapper、什么时候选择使用本地gradle?
    下载别人的项目或者使用操作以前自己写的不同版本的gradle项目时:用Gradle wrapper,也即:gradlew
    什么时候使用本地gradle?新建一个项目时: 使用gradle指令即可。

在 idea 中创建普通java 工程

具体整合:
第一步:创建由Gradle 管理的项目

在这里插入图片描述
第二步:修改当前项目使用本地安装的gradle:可以加快下载项目依赖jar 包的速度【配置了私服地址】。
在这里插入图片描述
特别提示 1: 使得在Terminal 中执行以gradlew 开头命令和操作图形化的IDEA 使用Gradle 版本不一定是同一个版本哦。
1.Terminal中以gradlew开头指令用的是Wrapper规定的gradle版本,wrapper中规定版本默认和idea插件中规定的版本一致。
2.而图形化的IDEA使用Gradle是本地安装的哦。
特别提示 2: 目前只能是在创建项目时重新设置本地gradle,创建新项目需要重新去改。

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

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

相关文章

js的BoM事件(二)

js的BoM事件&#xff08;二&#xff09;&#xff0c;上一篇的补充 一.alert,confirm二.prompt三.open四.close 一.alert,confirm 实例&#xff1a; alert(hi); confirm(message);二.prompt <body><button ></button><script>var btndocument.querySe…

git基础

Git 版本控制 什么是版本控制 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。 除了项目源代码&#xff0c;你可以对任何类型的文件进行版本控制。 为什么要版本控制 有了它你就可以将某个文件回溯到之前的状态&#xff0c;甚…

汇编实现点灯实验

.text .global _start _start: 设置GPIOF寄存器的时钟使能LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0x1<<5)STR R1,[R0]设置GPIOE寄存器的时钟使能LDR R0,0X50000A28LDR R1,[R0] 从r0为起始地址的4字节数据取出放在R1ORR R1,R1,#(0x1<<4) 第4位设置为1STR R1,[…

[ROS2系列] ubuntu 20.04测试rtabmap

目录 背景&#xff1a; 一、配置 turtlebot3 二、安装RTAB-Map ROS2包&#xff1a; 三、启动 Turtlebot3 模拟器&#xff1a; 四、启动 RTAB 地图&#xff1a; 五、启动导航&#xff08;nav2_bringup应安装软件包&#xff09;&#xff1a; 背景&#xff1a; 1、设备&…

什么是国密证书?

国密证书是指中国自主研发的密码算法和加密技术所生成的数字证书。它是为了保护国家信息安全而开发的一种电子证书标准。 国密证书采用了国际上通用的X.509v3标准&#xff0c;但具有自己独特的密码算法和密钥长度。这些算法和密钥长度在国际上被广泛接受并认可&#xff0c;同时…

ansible 调研

参考&#xff1a;自动化运维工具——ansible详解&#xff08;一&#xff09; - 珂儿吖 - 博客园 (cnblogs.com) ansible是新出现的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、chef、func、fabric&#xff09;的优点&#xf…

Jetson Orin NX 开发指南(3): 安装 ROS 系统

一、前言 由于本专栏主要介绍如何将 Jetson Orin NX 作为自主无人机的机载电脑&#xff0c;因此需要 ROS 操作系统来实现各个模块的衔接&#xff0c;ROS支持在Linux系统上安装部署&#xff0c;因为ROS与Ubuntu兼容性最好&#xff0c;使用它的首选开发平台是Ubuntu&#xff0c;…

GitHub基础

GitHUb快速入门教程&#xff1a;GitHub - skills/introduction-to-github: Get started using GitHub in less than an hour. 其实&#xff0c;这是一系列Github官方提供的互动式教程&#xff1a;GitHub Skills 官方文档&#xff1a;Hello World - GitHub 文档 1、仓库是什么意…

windows cmd下查看环境变量的信息

在windows cmd窗口下&#xff0c;怎么查看环境变量的值&#xff1f; 直接输入set命令然后回车&#xff0c;即可看到所有环境变量的信息&#xff0c;例如&#xff1a; 输入set <变量名>然后回车&#xff0c;可以查看某个环境变量的值&#xff0c;例如set path&#xff1a…

如何限制word文件中部分内容无法编辑

工作中我们经常会用到Word制作一些文件&#xff0c;文件中有一部分内容不想他人编辑&#xff0c;我们可以设置限制编辑&#xff0c;可以对一部分内容设置限制编辑&#xff0c;具体方法如下&#xff1a; 我们将需要将可以编辑的地方选中&#xff0c;然后打开限制编辑功能 然后勾…

Maven 项目模板

目录 什么是 archetype&#xff1f; 使用项目模板 Maven 将询问原型的版本 创建的项目 创建 pom.xml App.java AppTest.java 阿里云工具 Maven 使用 archetype(原型) 来创建自定义的项目结构&#xff0c;形成 Maven 项目模板。 在前面章节我们学到 Maven 使用下面的命…

IDEA工具之debug第三方jar包源码顺序错乱

IDEA工具之debug第三方jar包源码顺序错乱 场景描述原因分析解决方案 场景描述 概述 使用IDEA排查问题时&#xff0c;经常需要debug源码&#xff0c;当F7跟进依赖jar包时&#xff0c;总是出现Decompiled.class file, bytecode version:51.0 (Java 7)&#xff0c;提示Source code…

访问Apache Tomcat的manager页面

配置访问Tomcat manager页面的用户名、密码、角色 Tomcat安装完成后&#xff0c;包含了一个管理应用&#xff0c;默认安装在 <Tomcat安装目录>/webapps/manager 例如&#xff1a; 要使用管理页面的功能&#xff0c;需要在conf/tomcat-users.xml文件中配置用户、密码及…

c#-特殊的集合

位数组 可观察的集合 private ObservableCollection<string> strList new ObservableCollection<string>();// Start is called before the first frame updatevoid Start(){strList.CollectionChanged Change;strList.Add("ssss");strList.Add("…

[鹏城杯 2022]简单的php - 无数字字母RCE(取反)【*】

[鹏城杯 2022]简单的php 一、解题流程二、思考总结 题目代码&#xff1a; <?php show_source(__FILE__);$code $_GET[code];if(strlen($code) > 80 or preg_match(/[A-Za-z0-9]|\|"||\ |,|\.|-|\||\/|\\|<|>|\$|\?|\^|&|\|/is,$code)){die( Hello);}e…

Spark分布式计算原理

一、Spark WordCount运行原理 二、划分Stage 数据本地化 移动计算&#xff0c;而不是移动数据 保证一个Stage内不会发生数据移动 三、Spark Shuffle过程 在分区之间重新分配数据 父RDD中同一分区中的数据按照算子要求重新进入RDD的不同分区中 中间结果写入磁盘 有子RDD拉取数…

零代码编程:用ChatGPT批量调整文件名称中的词汇顺序

文件夹里面很多文件&#xff0c;需要批量挑战标题中的一些词组顺序&#xff1a;“Peppa Pig - Kylie Kangaroo (14 episode _ 4 season) [HD].mp4”这个文件名改成“14 episode _ 4 season _ Peppa Pig - Kylie Kangaroo.mp4”&#xff0c;可以在ChatGPT中输入提示词&#xff1…

NSSCTF[SWPUCTF 2021 新生赛]hardrce(无字母RCE)

代码审计&#xff1a; 使用get方式请求给wllm传参 使用preg_match函数正则匹配过滤掉了一些符号 \t,\r,\n,\,\[,\^,\],\",\-,\$,\*,\?,\<,\>,\,\ 以及 [a-zA-Z] 即所有的大小写字母 如果传入内容满足这些条件则会执行eval函数 URL编码取反绕过正则实现RCE&…

第83步 时间序列建模实战:Catboost回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍Catboost回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndr…

修改ubuntu服务器fs文件最大打开数

起因 在对项目进行压测的时候&#xff0c;请求异常 java.net.SocketException: socket closed&#xff0c;查看nginx代理服务器的日志。tail -f -n500 /var/log/nginx/error.log 显示 文件打开数太多socket() failed (24: Too many open files) while connecting to upstream …