使用maven的systemPath本地引用jar包打包会丢失jar问题

使用maven的systemPath本地引用oracle的jdbc驱动包 一文,使用systemPath的形式引用本地jar包,在直接使用idea开发运行时不会有什么问题,oracle的jdbc驱动包能够正常引用,但是当我们使用maven打包之后就出问题了。我们使用压缩软件打开打包出的jar包可以发现,使用systemPath引入的jar包并没有复制到打包出来的jar包。这就是为什么使用打包之后的jar运行就会报错的原因。

怎么解决这个问题呢?一个办法是修改pom文件,指定在打包的时候,将本地的jar包也一起打包。在build节点下增加如下代码:

<resources>
    <resource>
        <directory>${project.basedir}/lib</directory>
        <targetPath>BOOT-INF/lib/</targetPath>
        <includes>
            <include>**/*.jar</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <targetPath>BOOT-INF/classes/</targetPath>
    </resource>
</resources>

问题大概率即可解决,但是如果我们用的是SpringBoot的话,还有个更简单的办法。只需要给pom中的spring-boot-maven-plugin插件添加一个配置即可在打包的时候引入scope为system的jar包,pom中的代码如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>

打包后使用压缩软件查看jar包

完整的代码参考:https://gitee.com/lqccan/blog-demo/tree/master/%E5%90%8E%E7%AB%AF/ojdbc-package


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍