YOJ·环境搭建
后端
maven依赖
Java版本要选8
用的是阿里云脚手架建的项目,有些依赖可以直接勾选不会有bug。
但如果是Spring官方的脚手架,可能有bug,尤其是lombok。
框架和驱动
Spring Boot 2.7.2:阿里云脚手架没有显式引入spring boot starter,在dependecy managenment中配好了
Spring Web
Spring Boot starter aop:AOP支持
Spring Configuration Processor:配置数据处理器
MySQL Driver
MyBatis
MyBatis Plus
工具
lombok
swagger、knife4j:knife4j的父依赖自带了openAPI / swagger的依赖
apache commons lang3
docker java
docker client
hutool
可加可不加
Spring Boot Freemarker:更好的页面展示,但是选择和前端联调的话,也无所谓
Spring Session:给后续的微服务改造准备的,也不一定用得上
完整pom.xml
注意修改项目名
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
| <?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> <groupId>com.crowntit</groupId> <artifactId>Y-OJ-backend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Y-OJ-backend</name> <description>Y-OJ-backend</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.7.6</spring-boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>com.github.docker-java</groupId> <artifactId>docker-java</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.github.docker-java</groupId> <artifactId>docker-java-transport-httpclient5</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.8</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <mainClass>com.crowntit.yojbackend.YOjBackendApplication</mainClass> <skip>true</skip> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
</project>
|
application.yml
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
| spring: application: name: <group_name>-<project_name> profiles: active: dev mvc: pathmatch: matching-strategy: ant_path_matcher session: timeout: 2592000 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/<your_db_name> username: root password: 123456
server: address: 0.0.0.0 port: 8121 servlet: context-path: /api session: cookie: max-age: 2592000
mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-field: is_delete logic-delete-value: 1 logic-not-delete-value: 0
knife4j: enable: true openapi: title: "接口文档" version: 1.0 group: default: api-rule: package api-rule-resources: - com.<group_name>.<project_name>.controller
|
项目结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| src/main/java/com/[group_name]/[project_name]/ --common/ --controller/ --config/ --constant/ --exception/ --mapper/ --model/ ----dto/ ----entity/ ----vo/ --service/ ----impl/ --util/ --Application启动类
|
建表语句
创建一个和src同级的sql目录 /sql/create_table.sql
,存放sql脚本
在这篇文档的建表语句部分有完整的sql脚本
注意:我使用的MySQL版本是MySQL 8
IDEA插件
IDEA插件商店直接搜就有了,一般都是第一个
- Generate All Getter And Setter
- MyBatis X
前端
Vite创建项目
先下node.js和npm (自己找教程下载,然后配一下环境变量),然后查看版本
1 2 3 4 5 6 7 8
| D:\Projects\Y-OJ\V1.0\frontend>npm version
# 输出结果 { npm: '10.9.2', node: '22.15.0', # ...... }
|
在Vite官网找对应自己的node版本的Vite版本,和创建项目的命令
创建项目
1 2 3 4 5 6
| # 这个命令会在当前目录创建一个和<项目名>同名的目录,所以不需要额外建一个目录 npm create vite@latest <项目名> -- --template vue-ts
cd <项目名> npm install npm run dev
|
这里如果项目名有大写的话应该会问你一次 Package name
,正常的话就是直接提示 “Done”
“Done”之后分别运行它给的三个命令就好,然后访问 http://localhost:5173/
如果出现Vite+Vue的页面就是完成创建啦,结束的话可以按 q + 回车
package.json
如果node、npm、Vite、Vue3等版本都一样的话可以直接copy下面的配置,但如果不一致,严谨起见还是去官方文档找一下对应的版本,防止因为版本不兼容出现的bug。
关于monaco-editor也需要去看一下官方文档,这个组件对不同打包方式的前端项目,有不同的引入和配置方式,或者问一下AI也可以。似乎也有其他开发者封装好的面向Vite的直接可用的monaco-editor组件,可以自行查找。
这两段复制一下,覆盖掉你创建的项目的package.json的dependencies和devDependencies部分,然后运行npm install
就好了
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
| "dependencies": { "@bytemd/plugin-gfm": "^1.22.0", "@bytemd/plugin-highlight": "^1.22.0", "@bytemd/vue-next": "^1.22.0", "axios": "^1.9.0", "moment": "^2.30.1", "monaco-editor": "^0.52.2", "pinia": "^3.0.1", "vue": "^3.5.13", "vue-router": "^4.5.0" }, "devDependencies": { "@arco-design/web-vue": "^2.57.0", "@tsconfig/node22": "^22.0.0", "@types/node": "^22.13.9", "@vitejs/plugin-vue": "^5.2.4", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.5.0", "@vue/tsconfig": "^0.7.0", "eslint": "^9.21.0", "eslint-plugin-vue": "~10.0.0", "jiti": "^2.4.2", "npm-run-all2": "^7.0.2", "openapi-typescript-codegen": "^0.29.0", "prettier": "3.5.3", "typescript": "~5.8.0", "vite": "^6.3.5", "vite-plugin-monaco-editor": "^1.1.0", "vite-plugin-vue-devtools": "^7.7.2", "vue-tsc": "^2.2.8" }
|
本文标题:YOJ·环境搭建
文章作者:Crowntit
发布时间:2025-05-29
最后更新:2025-05-29
版权声明:本文为原创文章,转载请附上原文出处链接。