springboot项目打包成jar或war包的方式(引用了本地jar包的)

前言

由于公司有一些剩余的老资产,年代比较久远,然后一些新人过来的时候,他们学的技术和之前的比较有较大的的更新,想看懂很难,然后公司给了我一个月的时间用springboot重构一下之前的版本,在这个重构期间发现里面有很多公司自带的jar包,但是没有维护自己的maven服务器,所以必须在项目中引入本地jar包,在打包的时候碰到不少问题,当项目完成的时候需要打成war包,方便公司的部署,转换的时候又碰到了一些问题。所幸按时完成任务。具体请看下面:

一、引入本地jar包

先在项目下创建一个lib文件夹,将要导入的本地jar包放入其中,pom文件引入时groupId,version可以随便填,但是scope必须是system,systemPath是本地jar包的位置,这个必须是正确的,否则有可能出问题。我的位置是src/main/resources/static/lib,可以参考:
  1. 刚开始引入的系统路径是${project.basedir}/src/main/resources/static/lib/XmlSchema-1.1.jar
<dependency>
    <groupId>com.infosec</groupId>
    <artifactId>XmlSchema</artifactId>
    <version>1.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/static/lib/XmlSchema-1.1.jar</systemPath>
</dependency>

虽然在开发的时候可以访问到,但是打包成jar包时,就会出现ClassNotFoundException,原因是没有找到本地jar包

2.解决上面的问题的方法就是将 p r o j e c t . b a s e d i r 改 为 {project.basedir}改为 project.basedir{pom.basedir},问题就解决了,具体是什么原因不是很清楚

<dependency>
    <groupId>com.infosec</groupId>
    <artifactId>XmlSchema</artifactId>
    <version>1.1</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/src/main/resources/static/lib/XmlSchema-1.1.jar</systemPath>
</dependency>

二、打包成jar包

1.修改打包方式为jar

<artifactId>itsramanage</artifactId>
<version>0.0.1-SNAPSHOT</version>
<description>Demo project for Spring Boot</description>
<packaging>jar</packaging>

2.修改打包插件的配置

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration> 
                   <!--将包含作用域为system的本地jar包包含到jar包-->
                   <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
        <!--打包好后的jar包名称-->
        <finalName>ROOT</finalName>
    </build>
  1. maven打包方式
    在这里插入图片描述

三、打包成war包

  1. 在入口类同级的包下创建一个类SpringBootWarInitializer,用于做tomcat的入口类

# jar包入口类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ItsramanageApplication {

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

}

# war包入口类
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class SpringWarInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        # 值得注意的是,这里的类是jar包入口类的类名
        return application.sources(ItsramanageApplication.class);
    }
}
  1. 将打包修改为war
<artifactId>itsramanage</artifactId>
<version>0.0.1-SNAPSHOT</version>
<description>Demo project for Spring Boot</description>
<packaging>war</packaging>

3.引入tomcat,避免内置tomcat对服务产生影响

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

4.修改插件,如果不修改会出现war包中找不到类的异常

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--fork :  如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart   这个要手动加进去 -->
                    <!--<fork>true</fork>-->
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${pom.basedir}/src/main/resources/static/lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

        </plugins>
        <finalName>ROOT</finalName>
    </build>

5.按照jar包的操作方法即可生成一个war包,部署即可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值