SpringBoot打成war并引入本地第三方jar包

前言

我们都知道 SpringBoot 是内嵌 Tomcat 服务器,所以每次重新启动都是用的新的 Tomcat 服务器。这样就会出现一些问题,所有们才需要将 SpringBoot 项目打成 war 包,放到 Tomcat 中去运行。这里记录一下将 Springboot项目打成 war 包的具体的步骤,以便后续参考学习。

正文

首先看看我项目引用的外部 jar 包:


第一步:修改pom.xml文件将默认的jar方式改为war:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.icbc</groupId>
<artifactId>icbc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

第二步:排除SpringBoot内置的Tomcat容器并添加Tomcat依赖:

<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>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

第三步:在pom.xml里面把以上所有引入的外部jar包加入到本地依赖里面,

<!--引入外部jar包-->
<dependency>
    <groupId>com.1</groupId>
    <artifactId>out-jar-1</artifactId>
    <version>1.45</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/bcprov-jdk16-1.45.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.2</groupId>
    <artifactId>out-jar-2</artifactId>
    <version>1.6</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/commons-codec-1.6.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.3</groupId>
    <artifactId>out-jar-3</artifactId>
    <version>2.5</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/commons-lang-2.5.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.4</groupId>
    <artifactId>out-jar-4</artifactId>
    <version>1.2</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/commons-logging-1.2.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.5</groupId>
    <artifactId>out-jar-5</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/icbc-api-sdk-cop.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.6</groupId>
    <artifactId>out-jar-6</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/icbc-api-sdk-cop-io.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.7</groupId>
    <artifactId>out-jar-7</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/icbc-ca.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.8</groupId>
    <artifactId>out-jar-8</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/InfosecCrypto_Java1_02_JDK14+.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.9</groupId>
    <artifactId>out-jar-9</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/jstl.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.10</groupId>
    <artifactId>out-jar-10</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/log4j-1.2.17.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.11</groupId>
    <artifactId>out-jar-11</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/ojdbc14-10.2.0.3.0.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.12</groupId>
    <artifactId>out-jar-12</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/proguard.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.13</groupId>
    <artifactId>out-jar-13</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/sqljdbc.jar</systemPath>
</dependency>

第四步:在 plugins 标签下添加以下配置,否则外部依赖无法打进war包

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <!--<failOnMissingWebXml>false</failOnMissingWebXml>-->
        <webResources>
            <resource>
                <directory>/src/main/resources/lib</directory>
                <targetPath>WEB-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
    </configuration>
</plugin>

第五步:修改SpringBoot启动类,首先需要继承org.springframework.boot.web.support.SpringBootServletInitializer类,然后重写configure类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching
public class IcbcApplication extends SpringBootServletInitializer {

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(IcbcApplication.class);
  }

  public static void main(String[] args) {
    SpringApplication.run(IcbcApplication.class, args);
  }

}

第六步:以上步骤完成之后,就可以打包了,打包的方式可以看我这篇文章:https://blog.csdn.net/weixin_42135693/article/details/106641803

war包在本地Tomcat运行的方法

war包放到tomcat的webapps目录下,再启动tomcat(bin下面的startup.bat),即可自动解压部署。

猜你喜欢

转载自blog.csdn.net/weixin_42135693/article/details/106659043
今日推荐