java

我的第一个WAR包(MAVEN)

2022-08-18  本文已影响0人  zhuhangit

背景交代

项目特征:服务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="/部署包名/路由名称/">
<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

静态资源问题

https://blog.51cto.com/u_13567403/5055713

上一篇下一篇

猜你喜欢

热点阅读