springboot中手动引入外部jar的正确操作

/ 默认分类 / 0 条评论 / 866浏览

在springboot中,你是否遇到过,如果一个jar依赖在maven仓库以及各镜像仓库中都不存在,只有下载到你的本地,这个时候要怎样引入jar呢?其实方法很多,你最先 想到的应该是在idea中导入library,像下面这样:

method1 传统导入方式

但是这样有一个很明显的弊端,如果多人协作开发,那么可能需要一些沟通啦

way2:上传jar到maven中央仓库

https://oss.sonatype.org/ 说实话这个是比较繁琐的,需要的童鞋自行百度,网上很多教程

way3:搭建maven私服

maven私服nexus上传第三方jar包以及下载,这个我之前弄过,需要占用的服务器资源还是蛮多的,并且也比较费精力和时间

way4:pom文件scope的system属性

引入:

     <dependency>
            <groupId>dingding</groupId>
            <artifactId>dingding</artifactId>
            <version>2.8</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190628.jar</systemPath>
        </dependency>

注意:

groupId:自定义
artifactId:自定义
version:自定义
scope:必须是system
systemPath:jar包的路径(idea编写的时候会有提示的)
通过上述方式,在开发环境没有什么问题,不会存在什么包找不到等情况
但是,但是springboot项目需要打包部署,所以打包是需要额外配置的(上述的第一二中方式不需要做额外处理),***==并且一般我们会使用jenkins持续集成自动化发包,这个时候不要忘记将lib也要push到git==***

下面即为处理打包:
directory:指定lib文件夹的位置,由于是相对工程根目录,所以直接写上lib即可
targetPath:打包到的文件夹位置,写上BOOT-INF/lib即可,或者是WEB-INF/lib。【斜杠(/)加不加都行,如果是mac的话写./】
includes:一般都是以jar结尾,就写**/*.jar

    <build>
        <resources>
            <resource>
                <directory>lib</directory>
                <targetPath>/BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>
    </build>

maven中的完整配置

    <dependency>
            <groupId>dingding</groupId>
            <artifactId>dingding</artifactId>
            <version>2.8</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190628.jar</systemPath>
        </dependency>

    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>lib</directory>
                <targetPath>/BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>
    </build>

参考: