文末有惊喜🎉
背景
最近想新创建一个springboot项目,发现通过https://start.spring.io/无法创建Java8的项目了,只能创建Java17以上。找了很久没有解决,通过maven创建引依赖的方式总感觉差点意思,网上搜索有一种方法是通过阿里云Initializer:https://start.aliyun.com/ 但还是觉得没那么官方,哈哈🤪。
最后想着官方开源了Spring Initializr和start.spring.io两个项目,肯定能把那个能支持Java8的版本找到🤔,自己动手丰衣足食,说干就干。
1、下载start.spring.io项目源码
打开IDEA,下载https://github.com/spring-io/start.spring.io.git代码,发现只有一个main分支,好吧,查看提交历史,找到移除Java8和Java11支持的提交(图1),Checkout移除提交之前的一个提交;需要Java17,没有的请先下载哦!
![图1](https://img-blog.csdnimg.cn/direct/ad72f7345d564b87baa6ec7bf2997445.png)
2、模块分析
主pom包含两个模块:start-client和start-site
start-client:前端模块,打包执行安装node和yarn命令,然后执行前端依赖安装yarn install命令,然后执行yarn build前端打包命令;最后将前端打好的前端包copy到classes/static目录下,生产前端jar包,以供start-site引用;这块我觉得很有意思,通过jar包的形式引入前端模块;我们公司现有的方式是通过assembly插件移动到后端的static目录下,现在发现这种也是一种思路,后面有时间再出一篇文章介绍下这两种方式。
start-site:后端模块,发现引入了Spring Initializr项目的相关依赖,版本是0.21.0-SNAPSHOT,并且idea提示下载不下来,maven仓库并没有相关jar包。
start-site-verification:看官方文档应该是用来测试的,这个先不管。
3、编译安装Spring Initializr依赖
上面说Spring Initializr相关的依赖仓库里没有,只能自己下载源码编译安装了,找到0.21.1之前的提交,检出install即可。
4、start.spring.io打包
Spring Initializr依赖jar有了,最后就需要到start.spring.io根目录下执行打包命令
mvn package -Dmaven.test.skip=true
打包完之后,会生成一个可执行的jar文件start-site/target/start-site-exec.jar,迫不及待,赶紧运行看看。
java -jar start-site/target/start-site-exec.jar
成功了🎉,赶紧访问下http://localhost:8080,哇哇哇,想要的都有🎉🎉🎉🎉🎉🎉🎉🎉
赶紧把jar包保存一下,哈哈哈,以后要用自己运行下就好啦。需要的话文章附件下载就好了。
5、后续
根据上面描述先会打前端模块,如果本地有node,可以start-client模块前端插件执行相关的注释掉,进入start-client模块,自己使用npm先把前端打出来,然后在根目录执行maven打包命令;
npm i
npm build
6、JAR包
链接: https://caiyun.139.com/m/i?2fALg4skTQres 提取码:l7m4
别问我为什么不用BD云🤪