1. 我的环境
基于SpringBoot2.2.0、Spring 5.2.0
Jdk1.8.x
Eclipse photon
Maven 3.2.3 独立
项目名称:example
2. 在Spring 官网 https://start.spring.io/ 定制项目组件,目前是2.2.1,我后面将会修改为2.2.0
如下几张图
开发工具组件,选择如下图:
Web组件选择如下:
模板引擎选择如下:
安全组件选择如下图(测试的话也可以不选择):
数据库组件选择:当前测试项目不需要数据库访问组件,所以未选择。
在选择完需要的组件后,点击生成,会生成一个pom.xml项目
3. 将生成的项目压缩包保存到本地,解压,修改pom.xml,将版本由2.2.1 修改为2.2.0; 我这里修改主要是因为我本地仓库已经下载了SpringBoot2.2.0的相关包,为了避免从新去下载2.2.1的包,所以进行了修改。
4. 将example项目导入eclipse,选择导入 已经存在的Maven项目
5. 因为默认使用的是SpringBoot自带的内嵌tomcat,要打成war包,需要去掉内嵌tomcat并添加单独的完整tomcat的依赖。
具体如下:
有可能还存在单独的内嵌tomcat依赖,也需要去掉,如下
检查依赖包,必须不包含如下内容才表示依赖修改成功:
然后增加一个基于web容器的Spring初始化类:如果是上面的项目导入的,默认已经存在了,具体内容如下:
package mygroup.example;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ExampleApplication.class);
}
}
6. 直接导出项目的war包
右键pom.xml 文件
->run as -> Maven clean 清理打包路径
->run as -> Maven install 打包,其中Installing 表示生成的war包的位置
7. 多数情况下,实际的项目可能还存在自定义的jar包,如果是这样的话,就需要先将自定义的jar包上传到本地Maven仓库。
例如:在pom.xml文件中添加依赖,如下,表示将自定义的在E盘的jar包 epcloud_sdk-1.0.0.jar 在本地Maven仓库生成元数据
eclipse加载完成后,去本地仓库查看,在......\repository\mygroup\epcloud_sdk\1.0.0 下生成了2个文件
然后将E盘的jar包copy到本地maven仓库对应的目录:
修改pom.xml 中对自定义jar包的依赖,主要是去掉<scope>属性及<systemPath>属性,因为现在已经可以将自定义的jar当作完全的普通maven依赖的jar包来进行处理。
修改完成后保存,就可以直接导出项目的war包了。
8 .部署测试,这里写了一个测试的rest控制器。
package mygroup.example.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/hello")
public Map<String,Object> hello(){
Map<String, Object> map = new HashMap<String,Object>();
map.put("hello", "true");
map.put("pageSize", 30);
List<Map<String,Object>> teStrList = new ArrayList<Map<String,Object>>();
Map<String, Object> map1 = new HashMap<String,Object>();
map1.put("vname", "test");
map1.put("vid", "123455");
Map<String, Object> map2 = new HashMap<String,Object>();
map2.put("vname", "test2");
map2.put("vid", "3333333");
teStrList.add(map1);
teStrList.add(map2);
map.put("data", teStrList);
return map;
}
}
如果是jre,导出war包的时候将报错
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project example: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
所以必须使用jdk,将依赖修改为jdk,然后导出war包。如果导出太慢,可以去掉pom.xml中的测试依赖部分并注释掉测试代码
设置默认登录密码:
导出war包,war包将生成在本地maven仓库中,如下图:
将这里war包直接部署在tomcat中,然后进行访问:
输入:http://localhost:8080/example-0.0.1-SNAPSHOT/test/hello 后将显示登录页面,使用上面在application.properties中配置的用户名密码进行登录,然后输出结果如下图:
本文至此结束,希望对您有所帮助。