写在前面;
        使用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的更多相关文章

  1. gradle 打包springboot项目,找不到项目jar application.class

    如题:gradle 打包springboot项目,找不到项目jar入口main方法:application.class 检查:lib/目录下没有相应项目的jar包 用gradle命令行查看日志:gra ...

  2. gradle结合spring-boot生成可运行jar包,并打印日志

    1.用gradle把springboot项目打包成jar 1.1 build.gradle 中添加 buildscript { repositories { mavenLocal() maven { ...

  3. 用gradle把springboot项目打包成jar

    ``` 用gradle把springboot项目打包成jar ```### build.gradle 中添加 buildscript { repositories { mavenLocal() mav ...

  4. Gradle +HanLP +SpringBoot 构建关键词提取,摘要提取 。入门篇

    前段时间,领导要求出一个关键字提取的微服务,要求轻量级. 对于没写过微服务的一个小白来讲.有点赶鸭子上架,但是没办法,硬着头皮上也不能说不会啊. 首先了解下公司目前的架构体系,发现并不是分布式开发,只 ...

  5. Gradle系列之初识Gradle

    原文首发于微信公众号:躬行之(jzman-blog) 学习 Android 有一段时间了,开发中经常使用到 Gradle ,但是不知道 Gradle 构建项目的原理,计划花一点时间学习一下 Gradl ...

  6. spring-boot - demo

    当我发现把最初的一个demo整的面目全非的时候,突然想要找一个简单的demo做测试,发现与其在原来的上面该,还不如新建一个demo. 官方入门:http://projects.spring.io/sp ...

  7. 001-快速搭建Spring web应用【springboot 2.0.4】-gradle、springboot的启动过程分析、gradle多模块构建

    一.概述 学习<精通Spring MVC4>书籍笔记 二.笔记 1.快速构建Spring starter web项目几种方式 1>使用Spring Tool Suite生成Start ...

  8. gradle创建spring-boot项目

    刚来新公司,熟悉了公司项目搭建的框架,了解到了一种新的项目管理工具:gradle,从网上了解,据说比maven更加灵活化,于是便学习了一番.在此记录下来,一遍以后使用.gradle的安装就不说了,网上 ...

  9. idea 下gradle创建springboot 项目

    InterlijIdea 开发环境下创建基于springBoot的项目. 环境 1.jdk1.5以上 2.interlijidea 15 以上 步骤 1.File –>new –>Proj ...

随机推荐

  1. python prettytable 模块

    #coding:utf-8 # qianxiao996精心制作 from prettytable import PrettyTable x = PrettyTable(["名称", ...

  2. (web)Bugs_Bunny_CTF_writeup 部分简单web

    Nothing here QnVnc19CdW5ueXs1MjljNDI5YWJkZTIxNzFkMGEyNTU4NDQ3MmFmODIxN30K Bugs_Bunny{529c429abde2171 ...

  3. python练习册 每天一个小程序 第0006题

    1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都 ...

  4. APACHE ACTIVEMQ安装

    APACHE ACTIVEMQ安装 一.特点 支持各种语言和协议的客户端.如:Java.C.C++.C#.Ruby.Perl.Python及Php. 完全支持JMS的客户端及其他消息代理 完全支持JM ...

  5. 【模板】动态 DP

    luogu传送门. 最近学了一下动态dp,感觉没有想象的难. 动态DP simple的DP是这样的: 给棵树,每个点给个权值,求一下最大权独立集. 动态DP是这样的: 给棵树,每个点给个权值还到处改, ...

  6. uoj450 【集训队作业2018】复读机(生成函数,单位根反演)

    uoj450 [集训队作业2018]复读机(生成函数,单位根反演) uoj 题解时间 首先直接搞出单个复读机的生成函数 $ \sum\limits_{ i = 0 }^{ k } [ d | i ] ...

  7. ioctl以及read阻塞型引发的思考

    1. 尝试strace 或 jstack 去追踪程序,发现某一个进程作为socket连接server出现如下的log(strace追踪): 1. ioctl(45,[0],0) = 0 2. .... ...

  8. node的内置常量 __dirname和 __filename

    node的内置常量 __ dirname和 __ filename __dirname当前文件(你用node运行的文件)所在的文件夹地址 // dirname.js console.log(__dir ...

  9. webapi_2 今天全是大经典案例

    今天的案例又大又经典 我想想怎么搞呢因为要用到外联样式之类的了 写入内联也太大了 1. 先来一个单独小页面的吧 一个仿淘宝右侧侧边栏的案例 不多说都在注释里了 <!DOCTYPE html> ...

  10. Material Design with the Android Design Support Library

    Material Design with the Android Design Support Library 原文http://www.sitepoint.com/material-design-a ...