制作start.spring.io离线版本 2022-09版本
制作start.spring.io离线版本 2022-09
网上有很多制作start.spring.io离线版本的文章不适合新版本,此教程记录制作最新版本2022-09版过程,若其他版本可酌情参考。
成功制作start.spring.io后面临的问题
制作过程如下:
- 进入 https://start.spring.io/,点击左下角github链接,进入github下载工程编译
- 编译过程中遇到问题请自行百度;
- 编译成功后进入进入start.spring.io-main\start-site\target启动start-site-exec.jar;
- 启动成功后可正常进入页面,若在断网状态下后台报错I/O error on GET request for “https://spring.io/project_metadata/spring-boot”;
注:https://spring.io/project_metadata/spring-boot 主要作用获取版本信息 - 查看在 github阅读start.spring.io readme.adoc发现如下文字;
- 点击上图中的 Spring Initializr链接进入github下载Spring Initializr工程源码 ;
- 下载后进入源码initialize-web工程下的io.spring.initializr.web.support.springBootMetadataReader文件,修改内容如下:
SpringBootMetadataReader(ObjectMapper objectMapper, RestTemplate restTemplate, String url) throws IOException {
//this.content = objectMapper.readTree(restTemplate.getForObject(url, String.class));
this.content = objectMapper.readTree(getbootMeta());
}
public String getbootMeta() {
return "{\"id\":\"spring-boot\",\"name\":\"Spring Boot\",\"projectReleases\":[{\"version\":\"3.0.0-SNAPSHOT\",\"versionDisplayName\":\"3.0.0-SNAPSHOT\",\"current\":false,\"releaseStatus\":\"SNAPSHOT\",\"snapshot\":true},{\"version\":\"3.0.0-M5\",\"versionDisplayName\":\"3.0.0-M5\",\"current\":false,\"releaseStatus\":\"PRERELEASE\",\"snapshot\":false},{\"version\":\"2.7.5-SNAPSHOT\",\"versionDisplayName\":\"2.7.5-SNAPSHOT\",\"current\":false,\"releaseStatus\":\"SNAPSHOT\",\"snapshot\":true},{\"version\":\"2.7.4\",\"versionDisplayName\":\"2.7.4\",\"current\":true,\"releaseStatus\":\"GENERAL_AVAILABILITY\",\"snapshot\":false},{\"version\":\"2.6.13-SNAPSHOT\",\"versionDisplayName\":\"2.6.13-SNAPSHOT\",\"current\":false,\"releaseStatus\":\"SNAPSHOT\",\"snapshot\":true},{\"version\":\"2.6.12\",\"versionDisplayName\":\"2.6.12\",\"current\":false,\"releaseStatus\":\"GENERAL_AVAILABILITY\",\"snapshot\":false},{\"version\":\"2.5.14\",\"versionDisplayName\":\"2.5.14\",\"current\":false,\"releaseStatus\":\"GENERAL_AVAILABILITY\",\"snapshot\":false},{\"version\":\"2.4.13\",\"versionDisplayName\":\"2.4.13\",\"current\":false,\"releaseStatus\":\"GENERAL_AVAILABILITY\",\"snapshot\":false},{\"version\":\"2.3.12.RELEASE\",\"versionDisplayName\":\"2.3.12.RELEASE\",\"current\":false,\"releaseStatus\":\"GENERAL_AVAILABILITY\",\"snapshot\":false}]}";
}
注:getbootMeta()返回值由https://spring.io/project_metadata/spring-boot获取。
- 编译输入mvn clean package –DskipTests编译initializr-web,遇到问题请自行百度,编译成功后再initializr-web\target下生成initializr-web-0.13.0-SNAPSHOT.jar;
- 用编译生成的initializr-web-0.13.0-SNAPSHOT.jar替换start.spring.io-main\start-site\target目录中start-site-exec.jar中的lib包下的initializr-web;
- 替换start-site-exec.jar中的文件,注意,仔细按照如下操作进行: 在start-site-exec.jar单击右键选择用winrar打开,进入BOOT-INF/lib中删除原先的initializr-web-0.13.0-SNAPSHOT.jar,点击添加,在弹出页面 将压缩方式选择为存储,选择文件 在添加文件 追加…选择前面生成的initializr-web-0.13.0-SNAPSHOT.jar,在点击确认即可。
13. 启动start-site-exec.jar即可完成start.spring.io离线版本的制作。