Java实战12之采用gradle新建springboot项目
目录
前言:
Gradle与Maven的核心区别在于构建模型、配置方式、性能表现和灵活性。Gradle基于Groovy/Kotlin DSL的任务驱动模型,支持增量构建,性能显著优于Maven;Maven则采用XML配置的预定义生命周期,强调标准化但灵活性较低
核心差异对比
配置语言与构建模型。
Maven:使用XML(
pom.xml)定义项目结构和生命周期,遵循严格的阶段(清理、编译、测试等),强调约定优于配置。Gradle:采用Groovy或Kotlin DSL(
build.gradle),通过任务有向无环图(DAG)动态定义构建流程,支持灵活定制。性能表现。
构建速度:Gradle的增量构建和缓存机制使其在大多数场景下比Maven快2-10倍,尤其是多模块项目中差异更为显著。例如:
中型项目(100模块)增量构建速度提升40倍。
大型单体应用(5万文件)纯净构建快3倍。
依赖管理与扩展性。
Maven:依赖解析简单,但范围有限;扩展需依赖插件,定制能力较弱。
Gradle:支持多仓库(如Maven Central、JCenter),依赖声明更简洁,且允许自定义依赖解析策略。
适用场景选择。
优先选Maven:项目结构标准化、依赖简单或需兼容传统Maven生态(如Spring早期版本)。
优先选Gradle:需要动态构建逻辑(如Android项目)、多模块复杂依赖或追求高性能构建。
废话少说,直接开干
一、新建springboot项目 -demogradle



这里有时候会遇到问题,download的时候会无法下载,那我们可以直接去spring 官网下载

二、添加springboot web 部分
implementation 'org.springframework.boot:spring-boot-starter-web'
三、新建测试controller

四、启动项目
application.yml 配置我喜欢加上项目名
server:
port: 8081
servlet:
context-path: /demogradle
启动查看


这就完美了,是不是看起来很简单,当然这里面也会遇到问题,idea版本问题,新建的项目很多都是默认springboot 版本是3.2以上,那么需要的jdk就是11以上,然而我们往往使用的都是jdk8,这时候就会报错,所以我们就需要修改一下配置
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.5'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
五、添加日志logback
随便springboot 自带logback,但是还是要添加依赖
implementation('org.springframework.boot:spring-boot-starter-web') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-log4j2'
}
// Lombok 核心依赖
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32' // 关键:启用注解处理器
// SLF4J API(Spring Boot 默认包含,但显式声明更安全)
implementation 'org.slf4j:slf4j-api'
我们采用注解的方式打印日志
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_PATH" value="logs"/>
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
controller 直接加注解
@Slf4j
@RestController
@RequestMapping("/helloController")
public class HelloController {
@GetMapping("/hello")
public String hello(){
log.info("hello gradle Springboot!");
return "hello gradle Springboot!";
}
}
启动一下,可以看到
六、添加数据库连接
1、新建表和插入几条数据
CREATE TABLE `student`(
`stuId` INT(11) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(20) COMMENT '姓名',
`age` INT(2) COMMENT '年龄',
`sex` VARCHAR(4) COMMENT '性别',
`stuClass` INT(11) COMMENT '班级',
PRIMARY KEY (`stuId`)
)ENGINE=MYISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 ;
INSERT INTO student VALUES(1001,'张三',10,'男',202201),(1002,'李四',10,'男',202201),
(1003,'王五',11,'男',202202),(1004,'小红',10,'女',202201);
2、 添加mysql和mybatis依赖
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4' // Spring Boot Starter JDBC (用于事务管理) implementation 'org.springframework.boot:spring-boot-starter-jdbc' // MySQL 5.6 兼容的 JDBC 驱动版本 implementation 'mysql:mysql-connector-java:5.1.49' // MyBatis 核心库 implementation 'org.mybatis:mybatis:3.5.7' implementation 'com.zaxxer:HikariCP:3.4.5'
application.yml
spring:
datasource:
typ: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://XXXXXXXXXXXXXXXX/demotest?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&failOverReadOnly=false
username: XXXXXXXXXXXX
password: XXXXXXXX
mybatis:
mapper-locations: classpath:/mapper/*.xml
configuration:
map-underscore-to-camel-case: false
3、bo
@Data
public class StudentBo {
private int stuId;
private String name;
private int age;
private String sex;
private int stuClass;
}
4、mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demogradle.dao.StudentinfoDao">
<select id="selectStudentdbrich" resultType="com.example.demogradle.bo.StudentBo">
SELECT * FROM studentinfo
</select>
</mapper>
5、dao层
public interface StudentinfoDao {
List<StudentBo> selectStudentdbrich();
}
6、service
@Service
public class StudentService {
@Resource
private StudentinfoDao studentinfoDao;
public List<StudentBo> selectStudentdbrich() {
return studentinfoDao.selectStudentdbrich();
}
}
7、controller
@RestController
@RequestMapping("/studentinfoController")
public class StudentinfoController {
private static Logger log = LoggerFactory.getLogger(StudentinfoController.class);
@Autowired
private StudentService studentService ;
@RequestMapping("/selectStudent")
public List<StudentBo> selectStudent(){
List<StudentBo> list=studentService.selectStudentdbrich();
log.info("查询条数={}",list.size());
return list;
}
}
8、启动类添加dao注入
@MapperScan(basePackages = {"com.example.demogradle.**.dao"})
启动项目,localhost:8081/demogradle/studentinfoController/selectStudent

七、打包到服务器
bootJar {
enabled = true
archiveBaseName.set('demogradle')
archiveClassifier.set('')
archiveVersion.set('')
// 排除配置文件
exclude('application*.yml')
exclude('logback-spring.xml')
// 设置主类
manifest {
attributes(
'Main-Class': 'org.springframework.boot.loader.JarLauncher',
'Start-Class': 'com.example.demogradle.DemogradleApplication',
'Class-Path': 'resources/'// 显式声明外部配置目录
)
}
}
// 设置默认构建任务
build.dependsOn bootJar
直接去服务器查询

到这里就完美了!
更多推荐




所有评论(0)