1、前言
楼主准备自己开发一个OJ系统,从网络上搜索各大开源OJ,用本专栏记录部署过程,从中学习经验,为开发自己的OJ做准备;HOJ是其中比较好的一个开源OJ参考,本系列为HOJ部署系列。本文介绍在打包后端代码时所遇到的问题,在部署HOJ判题机,二开HOJ后端之后,都涉及如何打包HOJ后端代码发布。
HOJ后端代码如何运行起来,可参考本系列另一篇文章。
HOJ官网地址:HOJ官网,开源OJ
Docker部署源代码:HOJ-Deploy: HOJ的部署仓库,基于docker-compose的一键化部署,支持单机部署及分布式部署
如果以上代码官网失效或不再开源,可私信楼主获取。
2、打包流程
楼主曾尝试直接根据HOJ的官方文档进行打包,但提示mvn命令不存在,估计是没配置环境变量,后来经过楼主一番测试,以下流程可走通。
2.1 环境准备
先下载好源码,用idea工具打开hoj-springboot项目,打开后目录长这样:
楼主是先将后端项目配置能运行起来之后,又打包的;如何配置后端项目能够运行起来,参考另一篇文章。
理论上只要不运行,配置不修改也没关系,可以直接打包尝试一下;
因为如果不改配置(修改成自己可用的mysql、redis、nacos连接信息),即便打包成功,这个jar包也是不可用的。
2.2 版本确认
楼主的IDEA是2021.3,JDK是1.8,maven是3.6.0,可以不着急改版本,如果有遇到其他错误,再看是否是版本问题。
项目版本都调整为jdk1.8
在项目上右键->Open Module Settings
以下四个Modules的language level都改为8
SDK也确认是否为8
2.3 尝试编译
在项目右侧Maven栏下,先点hoj-springboot->Lifecycle下的clean再点package
如果右侧没有Maven请自行搜索如何调出来Maven窗口
注意是点hoj-springboot下的package,不要点子模块的,因为子模块有依赖,单独package子模块并不成功。
2.4 报错解决:RepackageMojo ..61.0..52.0
RepackageMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.6.RELEASE</version>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
具体位置在这里:
参考:https://www.cnblogs.com/stackfing/p/16938441.html
2.5 删除仓库重新下载Maven依赖
上面配置了maven plugin之后楼主的idea一直标红,刚开始一直以为有问题,实际上已经成功了;如果是真的依赖下载不下来,则可以尝试定位到仓库目录,把相关的plugin依赖删掉,再重新下载尝试。
以下是楼主的目录,把这些都删掉,再尝试。