背景交代
项目特征:服务springboot(maven)、前端vue
项目结构:springboot+mybatis+sqlserver
部署平台:WebLogic Server(12c)
一、打包WAR配置
1.修改启动方法
继承SpringBootServletInitializer,重写configure
@SpringBootApplication
public class ServerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ServerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
2.处理依赖
移除springboot默认的tomcat配置;
移除默认的spring-boot-starter-tomcat,使用provided;
添加tomcat-servelt-api依赖(注意根据自己的情况修改version
);
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
3.设置MAVEN打包方式
<packaging>war</packaging>
4.添加打包插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<!-- 包名 -->
<!-- <warName>name</warName> -->
<!--指定输出目录-->
<outputDirectory>${project.basedir}/./z_public</outputDirectory>
</configuration>
</plugin>
二、集成VUE静态页面
1.打包添加静态资源
静态地址是以绝对路径/static开头的,访问时使用/文件夹名称
;
包内路径:WEB-INF\classes\static\文件夹;
打包时会将warSourceDirectory
路径下所有文件拷贝至包内(注意层级路径);
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<!-- 静态资源-->
<warSourceDirectory>${project.basedir}/./z_static</warSourceDirectory>
</configuration>
</plugin>
2.设置vue根路径
部署包名+路由名称;
<head>
<base href="//www.greatytc.com/部署包名/路由名称/">
<body>
3.使用hash路由
建议使用hash路由,防止刷新无法访问
export default new Router({
mode: 'hash',
routes: [
{
path: '/',
name: 'landing-page',
component: LandingPage
}
]
})
三、一些问题
1.xml文件无法识别(无法使用通配符)
//@ImportResource(locations = {"classpath*:/**/spring-*.xml"})
//改为绝对路径
@ImportResource(locations = {"classpath:maps/xxx.xml"})
2.设置启动类
<properties>
<start-class>xxx</start-class>
</properties>
3.路由无法访问
目前处理方式
路由增加"/index.html/#/"
4.WAR包根目录不包含“WEB-INF”
直接打包生成的war结构和jar一致,无法正常使用;
可修改打包包名或者打包路径,使用新文件即可;
正常路径下仍会有一个war包,但无法使用;
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<!-- 打包文件名称-->
<warName>name</warName>
<!--指定输出目录-->
<outputDirectory>${project.basedir}/./z_public</outputDirectory>
</configuration>
</plugin>
5.排除包内部分文件
排除部分配置文件,或者jar包依赖
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<!--不打入war包的文件类型或者路径-->
<packagingExcludes>
*/classes/*-test.properties, */lib/test.jar
</packagingExcludes>
</configuration>
</plugin>
四、参考文献
springboot打war包
https://blog.csdn.net/Dongzeqi/article/details/124314444
静态资源问题