Browse Source

fix 后端工程初始化

zhanghaijun 2 years ago
parent
commit
b75fdf83a5

+ 1 - 1
.editorconfig

@@ -3,7 +3,7 @@ root = true
 
 # 空格替代Tab缩进在各种编辑工具下效果一致
 [*]
-indent_size = 2
+indent_size = 4
 charset = utf-8
 end_of_line = lf
 indent_style = space

+ 10 - 4
.gitignore

@@ -3,11 +3,17 @@ target/
 !**/src/main/**/target/
 !**/src/test/**/target/
 
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
 ### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
+.idea/
 *.iws
 *.iml
 *.ipr

+ 174 - 36
pom.xml

@@ -1,43 +1,181 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.example</groupId>
-  <artifactId>mul-agent-virtual-simulation-system</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
-  <name>${project.artifactId}</name>
-  <description>多智体服务</description>
+    <groupId>com.example</groupId>
+    <artifactId>mul-agent-virtual-simulation-system</artifactId>
+    <version>${revision}</version>
+    <packaging>pom</packaging>
+    <name>${project.artifactId}</name>
+    <description>多智体服务</description>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <java.version>17</java.version>
-    <maven.compiler.source>${java.version}</maven.compiler.source>
-    <maven.compiler.target>${java.version}</maven.compiler.target>
-    <maven.test.skip>true</maven.test.skip>
-    <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
-    <hutool.version>5.8.16</hutool.version>
-  </properties>
+    <properties>
+        <revision>1.0.1</revision>
+        <java.version>17</java.version>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <maven.test.skip>true</maven.test.skip>
+        <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
+        <!-- 依赖 -->
+        <hutool.version>5.8.16</hutool.version>
+        <spring-boot.version>3.1.5</spring-boot.version>
+        <lombok.version>1.18.30</lombok.version>
+        <!-- 插件版本 -->
+        <mapstruct-plus.version>1.3.5</mapstruct-plus.version>
+        <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
+        <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
+        <maven-war-plugin.version>3.2.2</maven-war-plugin.version>
+        <therapi-javadoc.version>0.15.0</therapi-javadoc.version>
+        <maven-compiler-plugin.verison>3.11.0</maven-compiler-plugin.verison>
+        <maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
+        <flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
+    </properties>
 
-  <build>
-    <finalName>${project.artifactId}</finalName>
-      <resources>
-        <resource>
-          <directory>src/main/resources</directory>
-          <filtering>false</filtering>
-        </resource>
-      </resources>
-      <plugins>
-        <!--代码格式插件,默认使用spring 规则-->
-          <plugin>
-            <groupId>io.spring.javaformat</groupId>
-            <artifactId>spring-javaformat-maven-plugin</artifactId>
-            <version>0.0.32</version>
-          </plugin>
-      </plugins>
-  </build>
-  <repositories>
+    <modules>
+        <module>server</module>
+    </modules>
+
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- SpringBoot的依赖配置-->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <!-- hutool 的依赖配置-->
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-bom</artifactId>
+                <version>${hutool.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.projectlombok</groupId>
+                <artifactId>lombok</artifactId>
+                <version>${lombok.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <profiles>
+        <!-- 本地开发环境 -->
+        <profile>
+            <id>local</id>
+            <properties>
+                <profiles.active>local</profiles.active>
+                <logging.level>debug</logging.level>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <!-- 生产环境 -->
+        <profile>
+            <id>prod</id>
+            <properties>
+                <profiles.active>prod</profiles.active>
+                <logging.level>info</logging.level>
+            </properties>
+        </profile>
+    </profiles>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>false</filtering>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin.verison}</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>com.github.therapi</groupId>
+                            <artifactId>therapi-runtime-javadoc-scribe</artifactId>
+                            <version>${therapi-javadoc.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                            <version>${lombok.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.springframework.boot</groupId>
+                            <artifactId>spring-boot-configuration-processor</artifactId>
+                            <version>${spring-boot.version}</version>
+                        </path>
+                        <path>
+                            <groupId>io.github.linpeilie</groupId>
+                            <artifactId>mapstruct-plus-processor</artifactId>
+                            <version>${mapstruct-plus.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok-mapstruct-binding</artifactId>
+                            <version>${mapstruct-plus.lombok.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                    <compilerArgs>
+                        <arg>-parameters</arg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
+            <!-- 单元测试使用 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${maven-surefire-plugin.version}</version>
+                <configuration>
+                    <!-- 根据打包环境执行对应的@Tag测试方法 -->
+                    <groups>${profiles.active}</groups>
+                    <!-- 排除标签 -->
+                    <excludedGroups>exclude</excludedGroups>
+                </configuration>
+            </plugin>
+            <!-- 统一版本号管理 -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>flatten-maven-plugin</artifactId>
+                <version>${flatten-maven-plugin.version}</version>
+                <configuration>
+                    <updatePomFile>true</updatePomFile>
+                    <flattenMode>resolveCiFriendliesOnly</flattenMode>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>flatten</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>flatten</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>flatten.clean</id>
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>clean</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <repositories>
         <repository>
             <id>public</id>
             <name>aliyun nexus</name>

+ 6 - 0
server/README.md

@@ -0,0 +1,6 @@
+## 项目介绍
+
+## 项目必备环境
+
+- openjdk-17 [https://www.oracle.com/cn/java/technologies/downloads/#java17](https://www.oracle.com/cn/java/technologies/downloads/#java17)
+- redis [https://github.com/zkteco-home/redis-windows/releases](https://github.com/zkteco-home/redis-windows/releases)

+ 77 - 0
server/pom.xml

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.example</groupId>
+        <artifactId>mul-agent-virtual-simulation-system</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>server</artifactId>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.liquibase</groupId>
+            <artifactId>liquibase-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>${maven-jar-plugin.version}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>${maven-war-plugin.version}</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <warName>${project.artifactId}</warName>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 13 - 0
server/src/main/java/com/example/server/ServerApplication.java

@@ -0,0 +1,13 @@
+package com.example.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ServerApplication {
+
+  public static void main(String[] args) {
+    SpringApplication.run(ServerApplication.class, args);
+  }
+
+}

+ 50 - 0
server/src/main/resources/application.yml

@@ -0,0 +1,50 @@
+server:
+  port: 8686
+  servlet:
+    context-path: /
+  undertow:
+    max-http-post-size: -1
+    buffer-size: 512
+    direct-buffers: true
+    threads:
+      io: 8
+      worker: 256
+spring:
+  application:
+    name: server-train
+  profiles:
+    active: @profiles.active@
+  servlet:
+    multipart:
+      max-file-size: 10MB
+      max-request-size: 20MB
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    serialization:
+      indent_output: false
+      fail_on_empty_beans: false
+    deserialization:
+      fail_on_unknown_properties: false
+  mvc:
+    format:
+      date-time: yyyy-MM-dd HH:mm:ss
+  liquibase:
+    enabled: true
+    change-log: classpath:/db/changelog/db-server.xml
+  datasource:
+    driver-class-name: org.h2.Driver
+    type: org.h2.jdbcx.JdbcConnectionPool
+    url: jdbc:h2:./store/db_train;IGNORECASE=TRUE;MODE=MySQL;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9090;USER=root;PASSWORD=123456
+    username: root
+    password: 123456
+  h2:
+    console:
+      path: /h2
+      settings:
+        trace: false
+        web-allow-others: true
+logging:
+  level:
+    com.example: @logging.level@
+    org.springframework: warn
+  config: classpath:/logback.xml

+ 26 - 0
server/src/main/resources/db/changelog/db-server-train.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<databaseChangeLog
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
+
+
+    <changeSet id="demo" author="zhanghaijun" failOnError="false" runOnChange="true">
+        <createTable tableName="goods" schemaName="${schema.name}" tablespace="${tablespace}" remarks="商品">
+            <column name="goods_id" type="${autoing.type}" autoIncrement="true" remarks="商品ID">
+                <constraints nullable="false" primaryKey="true"/>
+            </column>
+            <column name="logo" type="VARCHAR(128)" defaultValue="" remarks="主图地址"/>
+            <column name="remark" type="VARCHAR(255)" defaultValue="" remarks="备注商品"/>
+
+            <column name="status" type="${number.type}" defaultValue="1" remarks="数据状态"/>
+            <column name="tenant_id" type="VARCHAR(64)" defaultValue="" remarks="租户字段"/>
+            <column name="create_time" type="datetime" remarks="创建时间"/>
+            <column name="create_by" type="${autoing.type}" remarks="创建者"/>
+            <column name="update_time" type="datetime" remarks="更新时间"/>
+            <column name="update_by" type="${autoing.type}" remarks="更新者"/>
+        </createTable>
+    </changeSet>
+
+</databaseChangeLog>
+

+ 36 - 0
server/src/main/resources/db/changelog/db-server.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<databaseChangeLog
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
+
+    <property name="schema.name" value="${database.defaultSchemaName}"/>
+    <property name="catalog.name" value="${database.defaultCatalogName}"/>
+
+    <property name="clob.type" value="longtext" dbms="h2"/>
+    <property name="clob.type" value="longtext" dbms="mysql,mariadb"/>
+    <property name="clob.type" value="clob"/>
+
+    <property name="autoing.type" value="bigint(20)" dbms="h2"/>
+    <property name="autoing.type" value="bigint(20)" dbms="mysql,mariadb"/>
+    <property name="autoing.type" value="serial"/>
+
+    <property name="number.type" value="bigint" dbms="h2"/>
+    <property name="number.type" value="int" dbms="mysql,mariadb"/>
+    <property name="number.type" value="serial"/>
+
+    <property name="now" value="now()" dbms="h2"/>
+    <property name="now" value="now()" dbms="mysql,mariadb"/>
+    <property name="now" value="sysdate"/>
+
+    <changeSet author="zhanghaijun" id="mysql_charsets_change" runOnChange="true" runAlways="true" failOnError="false" dbms="mysql,mariadb">
+        <validCheckSum>ANY</validCheckSum>
+        <sql dbms="mysql,mariadb" splitStatements="true" stripComments="true">
+            ALTER DATABASE ${schema.name} DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin
+        </sql>
+    </changeSet>
+
+    <include relativeToChangelogFile="true" file="db-server-train"/>
+
+</databaseChangeLog>
+

+ 14 - 0
server/src/main/resources/logback.xml

@@ -0,0 +1,14 @@
+<?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} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+    </appender>
+
+</configuration>

+ 13 - 0
server/src/test/java/com/example/server/ServerApplicationTests.java

@@ -0,0 +1,13 @@
+package com.example.server;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ServerApplicationTests {
+
+  @Test
+  void contextLoads() {
+  }
+
+}