BAE部署springboot项目
由于近期想重新开发一个微信公众号,需要将一年前的web项目,转为spring boot微服务项目,因此有了这篇文章的诞生。
BAE
BAE,百度应用引擎、百度云,与此类似的有SAE,阿里云等。
相当于在百度云上购买自己的服务器及域名,适用于node.js、python、php、java项目。
一、使用BAE基础版
在部署列表一栏,添加部署,可以购买自己需要的服务。(本文代码版本工具为SVN,项目类型java8-tomcat)
注:可根据自身需求设置执行单元参数,已提升服务性能。
部署后,复制SVN地址。
二、BAE添加项目
将项目代码上传到BAE提供的SVN地址上,在此过程中遇到一系列问题,一下将一一说明。
1、由于BAE上不能部署jar包的项目,因此需将springboot项目打成war,如下:
a.先将pom文件,做一下处理,去除springboot自带的tomcat容器,并添加外部tomcat依赖。
<packaging>war</packaging>
...
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加servelt依赖 --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency>
b.springboot启动类继承SpringBootServletInitializer,并添加如下代码:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
return builder.sources(启动类名称.class);
}
c.使用maven命令将项目打成war包,
mvn clean package -Dmaven.test.skip=true
d.如果需要指定生成war的名字,可以在pom文件中设置:
<build>
<finalName>war包名称</finalName>
...
...
</build>
2、在项目的target目录下复制生成的war包,上传至BAE提供的svn地址上,并在浏览器中访问项目路径。
注:BAE下默认为ROOT.war,如需访问其他war包,路径应为:域名+war包名称,访问项目路径为:域名+war包名称+方法路径。
3、随着项目代码的增加,需要及时提升BAE的性能,否则服务将出现异常。
4、必须注意版本问题,由于JDK使用的为1.8,tomcat为7,导致项目部署到BAE上启动出错,无法使用。因此必须注意版本兼容问题。