Build spring web project

一、项目生成

1、Spring Boot CLI

  1. 首先,你需要安装 Spring Boot CLI。你可以参考 Spring Boot 官方文档中的安装指南:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing.cli
1
2
brew tap spring-io/tap
brew install spring-boot
  1. 创建一个基于 Gradle 的 Spring Boot 项目:
1
spring init --build gradle-project --groupId=com.weasley --artifactId=mrsix --name=mrsix --description="MrSix: Pipeline framework" mrsix

二、子模块

submodule-common

1
2
3
    1) mkdir submodule-common
    2) mkdir -p src/main/java/com/weasley/common
    3) mkdir -p src/main/resources

submodule-domain

1
2
3
    1) mkdir submodule-domain
    2) mkdir -p src/main/java/com/weasley/domain
    3) mkdir -p src/main/resources

submodule-application

1
2
3
    1) mkdir submodule-application
    2) mkdir -p src/main/java/com/weasley/application
    3) mkdir -p src/main/resources

submodule-interface

1
2
3
    1) mkdir submodule-interface
    2) mkdir -p src/main/java/com/weasley/interface
    3) mkdir -p src/main/resources

submodule-infrastructure

1
2
3
    1) mkdir submodule-infrastructure
    2) mkdir -p src/main/java/com/weasley/infrastructure
    3) mkdir -p src/main/resources

gradle

根目录 setting.gradle

1
2
3
4
5
    include 'submodule-common'
    include 'submodule-domain'
    include 'submodule-application'
    include 'submodule-interface'
    include 'submodule-infrastructure'

根目录 build.gradle

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 定义项目构建所需的仓库和依赖项
// 定义项目构建所需的仓库和依赖项
buildscript {

    repositories {
        mavenCentral()
    }

    dependencies {
        classpath('org.springframework.boot:spring-boot-gradle-plugin:3.0.4')
    }
}

plugins {
    id 'java'
    id 'groovy'
    id 'java-library'
    id 'org.springframework.boot' version '3.0.4'
    id 'io.spring.dependency-management' version '1.1.0'
}


allprojects{
    group = 'com.weasley'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '17'

    repositories {
        mavenCentral()
    }

    dependencyManagement {
        imports {
            mavenBom 'org.springframework.boot:spring-boot-dependencies:3.0.4'
        }
    }
}

subprojects {

    apply plugin: 'java'
    apply plugin: 'java-library'
    apply plugin: 'groovy'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    dependencies {}

    tasks.named('test') {
        useJUnitPlatform()
    }
}

maven

1
mvn archetype:generate -DgroupId=com.weasley -DartifactId=sdk-common -Dversion=1.0.0 -DinteractiveMode=false

三、增加通用依赖

spring-boot-devtools

1
    developmentOnly 'org.springframework.boot:spring-boot-devtools'

lombok

1
2
	compileOnly 'org.projectlombok:lombok:1.18.20'
	annotationProcessor 'org.projectlombok:lombok:1.18.20'

spring-boot-configuration-processor

1
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

validation

1
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '3.0.4'

mapstruct

1
2
    implementation 'org.mapstruct:mapstruct:1.5.3.Final'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'

knife4j

1
    implementation group: 'com.github.xiaoymin', name: 'knife4j-openapi3-jakarta-spring-boot-starter', version: '4.0.0'

mybatis plus

1
2
3
4
    implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.5.3.1'
    implementation group: 'com.baomidou', name: 'mybatis-plus-generator', version: '3.5.3.1'
    implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31'
    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.32'

spock

1
2
    testImplementation group: 'org.spockframework', name: 'spock-core', version: '2.3-groovy-4.0'
	testImplementation group: 'org.spockframework', name: 'spock-spring', version: '2.3-groovy-4.0'

h2

1
    testImplementation group: 'com.h2database', name: 'h2', version: '2.1.214'

embedded-redis

1
2
3
    testImplementation (group: 'it.ozimov', name: 'embedded-redis', version: '0.7.3') {
		exclude group: 'org.slf4j', module: 'slf4j-simple'
	}

actuator

1
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '3.0.5'

redission

1
    implementation group: 'org.redisson', name: 'redisson-spring-boot-starter', version: '3.20.0'

caffeine

1
    implementation group: 'com.github.ben-manes.caffeine', name: 'caffeine', version: '3.1.5'

hutool-core

1
2
    implementation group: 'cn.hutool', name: 'hutool-core', version: '5.8.15'
    implementation group: 'cn.hutool', name: 'hutool-extra', version: '5.8.16'

minio

1
    implementation group: 'io.minio', name:'minio', version: '8.4.3'

vavr

1
    implementation group: 'io.vavr', name: 'vavr', version: '0.10.4'

apm

1
    implementation group: 'org.apache.skywalking', name: 'apm-toolkit-logback-1.x', version: '8.15.0'

json-path

1
    implementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.8.0'

添加数据库表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.jupiter.api.Test;

import java.util.Collections;

public class CodeGenerator {

    @Test
    public void generator() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/file_center?serverTimezone=Asia/Shanghai", "", "")
                .globalConfig(builder -> {
                    builder.author("baomidou") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("/Users/disco/Downloads/outputFileCenter"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
                            .moduleName("system") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "/Users/disco/Downloads/outputFileCenter")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(Collections.emptyList()); // 设置需要生成的表名
//                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}
comments powered by Disqus