初识gradle, idea+springboot Demo
写在前面;
使用maven管理写过几个springboot的系统, 此篇博客纯属记录整理学习的过程.
另外, 源码分享地址在最后.
Java: 1.8.0_281
tomcat: 1.8
IDE: IntelliJ IDEA 2021.3.2(Ultimate Edition)
gradle: 目前(2022-04-08 17:05:31)官网最新是7.4.2, 但是我用的不是(后面解释)
系统: win10(win11也有测试)
编写md工具: MarkText v0.17.1
在开始之前先把maven的本地仓库共享给gradle在启动idea.
GRADLE_USER_HOME 不要拼错误了

1. idea创建gradle项目

1.2 填写如下图

1.3 点击Finish 创建项目

为什么会有上图中这种情况呢? 等各种进程跑完后我们来看项目根目录下的/gradle/wrapper/gradle-wrapper.properties文件

图中已经给出了默认gradle是7.1 这里的版本正好对应到上一张图中下载的版本.
那么下载的位置在那里呢? 其实图中也给出了,在wrapper/dists, 那父文件夹呢? 是你用户名下的.gradle 文件夹
这个位置可以在idea中进行设置, 可以更改到其他盘

在此回答开头介绍环境时候没有指定gradle版本的问题:
1. 很多教程里开头都是先去gradle官网下载压缩包,bin包也好,all包也好,
然后解压,配置环境变量GRADLE_HOME, 然后PATH中添加%GRADLE_HOME%\bin
2. 是因为之前的版本(应该是idea 20 版本之前)在创建gradle项目的最后
可以选择是使用默认gradle版本还是使用本地的, 也即在Finish之前还有一步
可以选择的页面.
3. 既然取消掉了创建时候选择本地版本, 应该是统一使用wrapper管理,
默认也是wrapper文件生效(创建成功后可以在设置中选择使用本地gradle版本)
4. 这样最别扭的就是可能在.gradle下会有很多安装包, 虽然.gradle可以换位置.
2. 添加依赖
使用springboot写一个简单的web接口, 以下依赖可以在 maven仓库 中进行搜索
2.1 配置仓库加载顺序和在项目中配置阿里源

2.2 全局阿里源
反复尝试过下面几种, 但是速度并没有将上图中注释放开的情况下速度快
(500k或1M, 配置的全局一直50多k)
参考:
2.3 添加 spring-boot-starter-web 依赖

注: 如果在添加环境变量GRADLE_USER_HOME(本地maven仓库共享给gradle)前启动的idea, 且你maven库中已经有了这个版本, 可能需要重启idea, 才会读取到本地maven库
gradle的jar包仓库默认在 .gradle\caches\modules-2\files-2.1\ 中
2.4 另外一种写法导入 hutool

implementation是默认的导入方式, 还有其他的导入方式(如:只在测试时候生效, 只运行时候生效等等)未做深究.
3 写一个简单的web接口
3.1 创建启动器
在src/main/java下创建com.demo.DemoApplication类文件
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
// idea自启动
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
// 设置时区
@PostConstruct
void setDefaultTimezone() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
}
}
3.2 创建接口
随便写的接口, 这里就没有接数据库, 也不写yml文件了(接口默认8080)
@RestController
@RequestMapping("/demo")
public class TestController {
@RequestMapping("/time")
public String time() {
return DateUtil.now();
}
}
4 运行测试接口
4.1 运行

4.2 测试接口
浏览器输入 localhost:8080/demo/time

5 打war包
5.1 默认是打jar包

5.2 修改java为war, 然后ctrl shift o

5.3 clean 一下 然后双击 war
记得将项目停止了.

war包的位置在项目根目录下 /build/libs/gradle-demo-1.0-SNAPSHOT.war
那么如何去掉后面的版本号呢? 在build.gradle内添加以下代码重新打包即可.
war {
archiveName("demo.war")
}
5.4 打开本地tomcat服务器, 将war包放入webapps下

可以看到已经运行成功. 记得将项目停止了.
5.5 浏览器测试
浏览器输入 localhost:8080/demo/demo/time

其中第一个demo是项目名(war包名称)
6 结束
至此gradle已经完成了, 其他扩展知识点可以跟着去学习
1. groovy语法(.gradle后缀名的文件)
2. gradle创建子项目(多模块或微服务需要的内容)
学习gradle入门以来, 确实感觉到比maven的pom管理jar包方式会方便很多, 尤其显示的行数会少很多. 至于其他的区别, 已经gradle让人有爱又恨的地方就去网上了解吧, 很有意思.
源码: 初识gradle
初识gradle, idea+springboot Demo的更多相关文章
- gradle 打包springboot项目,找不到项目jar application.class
如题:gradle 打包springboot项目,找不到项目jar入口main方法:application.class 检查:lib/目录下没有相应项目的jar包 用gradle命令行查看日志:gra ...
- gradle结合spring-boot生成可运行jar包,并打印日志
1.用gradle把springboot项目打包成jar 1.1 build.gradle 中添加 buildscript { repositories { mavenLocal() maven { ...
- 用gradle把springboot项目打包成jar
``` 用gradle把springboot项目打包成jar ```### build.gradle 中添加 buildscript { repositories { mavenLocal() mav ...
- Gradle +HanLP +SpringBoot 构建关键词提取,摘要提取 。入门篇
前段时间,领导要求出一个关键字提取的微服务,要求轻量级. 对于没写过微服务的一个小白来讲.有点赶鸭子上架,但是没办法,硬着头皮上也不能说不会啊. 首先了解下公司目前的架构体系,发现并不是分布式开发,只 ...
- Gradle系列之初识Gradle
原文首发于微信公众号:躬行之(jzman-blog) 学习 Android 有一段时间了,开发中经常使用到 Gradle ,但是不知道 Gradle 构建项目的原理,计划花一点时间学习一下 Gradl ...
- spring-boot - demo
当我发现把最初的一个demo整的面目全非的时候,突然想要找一个简单的demo做测试,发现与其在原来的上面该,还不如新建一个demo. 官方入门:http://projects.spring.io/sp ...
- 001-快速搭建Spring web应用【springboot 2.0.4】-gradle、springboot的启动过程分析、gradle多模块构建
一.概述 学习<精通Spring MVC4>书籍笔记 二.笔记 1.快速构建Spring starter web项目几种方式 1>使用Spring Tool Suite生成Start ...
- gradle创建spring-boot项目
刚来新公司,熟悉了公司项目搭建的框架,了解到了一种新的项目管理工具:gradle,从网上了解,据说比maven更加灵活化,于是便学习了一番.在此记录下来,一遍以后使用.gradle的安装就不说了,网上 ...
- idea 下gradle创建springboot 项目
InterlijIdea 开发环境下创建基于springBoot的项目. 环境 1.jdk1.5以上 2.interlijidea 15 以上 步骤 1.File –>new –>Proj ...
随机推荐
- 关于 jmeter变量是否在引用时候需要加上引号的坑
今天在玩jmeter的时候,发现一个问题:一个关于 jmeter变量是否在引用时候需要加上引号的坑: 众所周知:jmeter引用变量的时候 需要使用${变量名} 但是:大家是否遇到过有时候变量名外需要 ...
- 运营商的三大数据域——B域,O域,M域
O域(运营域).B域(业务域).M域(管理域)特指电信行业大数据领域的三大数据域. B域(业务域)= business support system的数据域, O域(运营域)= operation s ...
- RDMA相关的技术网站
https://www.cnblogs.com/vlhn/p/7909893.html https://www.cnblogs.com/vlhn/ 这个家伙的博客写的还不错,可以参考.
- vector存放边的方法
#include<bits/stdc++.h> using namespace std; struct Edge{ int x; int y; }; vector <Edge> ...
- 修道士与野人问题(BFS广度搜索)
#include "iostream.h" #include "string.h" //定义一个状态节点 typedef struct //存储各个状态 { i ...
- ThreadLocal 是什么?有什么用?
ThreadLocal 是一个本地线程副本变量工具类.主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的 ...
- springboot-数据库访问之jpa
什么是springDate? springData的作用: 整体简化的架构: JPA :Java Persistence API 如果没有springData 我们需要去学每一种对应的jpa实现, 有 ...
- poll() 方法和 remove() 方法的区别?
poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败 的时候会返回空,但是 remove() 失败的时候会抛出异常.
- 学习GlusterFS(三)
glusterfs,GNU cluster file system,创始人Anand Babu Periasamy,目标:代替开源Lustre和商业产品GPFS,glusterfs是什么: cloud ...
- AutoValue —— Generated immutable value classes
本文参考 在<Effective Java>第三版第十条"Obey the general contract when overriding equals"中提到goo ...