美文网首页java
我的第一个WAR包(MAVEN)

我的第一个WAR包(MAVEN)

作者: zhuhangit | 来源:发表于2022-08-18 19:37 被阅读0次

    背景交代

    项目特征:服务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

    相关文章

      网友评论

        本文标题:我的第一个WAR包(MAVEN)

        本文链接:https://www.haomeiwen.com/subject/zdzegrtx.html