spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!

注:此方式只适用于springmvc项目,springboot项目不可用!

若是springboot项目可参考:https://www.cnblogs.com/007sx/p/12442386.html

完整的引入三方jar包含2部分,缺一不可,
第一部分为编写代码阶段,编译时引用!
第二部分为打包成war阶段,运行时引用!

示例(多模块项目,单模块同理,以下也有说明!):

第一部分(编译调试时使用):

目录结构以及jar所在目录如下:

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!

pom.xml中:

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!
<dependency>
    <groupId>com.testgroupId>
    <artifactId>testjarartifactId>
    <version>0.0.1version>
    <scope>systemscope>
    <systemPath>${basedir}/src/main/resources/lib/test.jarsystemPath>
dependency>

第二部分(打包时使用):

pom.xml(其它模块)中:

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!
<build>
    <finalName>${project.artifactId}finalName>
    <plugins>

        <plugin>
            <artifactId>maven-war-pluginartifactId>
            <version>3.2.0version>
            <configuration>
                <webResources>
                    <resource>

                        <directory>../cashloan-component/src/main/resources/libdirectory>
                        <targetPath>WEB-INF/libtargetPath>
                        <includes>
                            <include>**/*.jarinclude>
                        includes>
                    resource>
                webResources>
            configuration>
        plugin>
    plugins>
build>

说明:由于此pom.xml是子模块的,所以引入其它模块下的jar需要../xxx形式,如果是单模块项目,直接${basedir}/xxx即可!

最后打包的效果:

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!

target/xxx/WEB-INF/lib/test.jar 存在即可!

完成这步骤代码即可正常构建运行和打包部署!

注:目前存在的问题,打包之后会在classes目录下target/xxx/WEB-INF/classes或者target/classes目录下多出来一个lib(示例中resources下目录命名为lib)目录里面存放的是三方jar,这个jar在项目运行中是用不到的,所以浪费了传输war包的时间!还没找到很好的解决方案,希望多多评论交流!

(已解决!)

方案分为单模块和多模块。

  1. 单模块pom.xml:只需在war打包插件中排除即可,如:

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!
<packagingExcludes>WEB-INF/classes/lib/*.jarpackagingExcludes>
  1. 多模块的被依赖模块pom.xml中(即最终打成jar的模块):

spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!
<build>
    <resources>
        <resource>
            <directory>src/main/resourcesdirectory>
            <filtering>falsefiltering>
            <excludes>
                <exclude>lib/*.jarexclude>
            excludes>
        resource>
    resources>
build>

当然,多模块时,2种方式都加上也可以,一劳永逸!

Original: https://www.cnblogs.com/007sx/p/12439620.html
Author: 007少侠
Title: spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541576/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 引迈信息惊喜周年庆 多重优惠劲爆来袭

    posted @2022-09-30 10:59 迈阿蜜 阅读(10 ) 评论() 编辑 Original: https://www.cnblogs.com/jnpf001/p/1…

    Java 2023年6月5日
    061
  • bean标签使用

    Java代码 ​ bean标签中添加scope属性,设置bean对应对象生成规则. 2.1 scope = “singleton” ​ 单例,默认值,适用于…

    Java 2023年6月13日
    067
  • 深入详解Mybatis的架构原理与6大核心流程

    MyBatis 是 Java 生态中非常著名的一款 ORM 框架,目前在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。 如果你想要进入一线大厂,能够熟练使用 My…

    Java 2023年6月15日
    086
  • Java中static块、构造块、构造函数的执行顺序

    最近被一个面试题难住了,看来之前对JAVA的执行顺序欠了解。以为原面试题代码: public class Example { public static void main(Str…

    Java 2023年5月29日
    076
  • 1.Mybatis-XML模板

    SELECT sr.ROLE_ID AS roleId, sr.ROLE_NAME AS roleName, sr.IS_ACTIVE AS isActive, sr.REMARK…

    Java 2023年6月13日
    081
  • 一文看懂JVM内存区域分布与作用

    那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看。 须知,本文是根据JDK8来介绍的。 程序计数器 首先它是线程私有的,它也称为…

    Java 2023年6月5日
    094
  • springboot竟然有5种默认的加载路径,你未必都知道

    上次分享了如何一步一步搭建一个springboot的项目,详细参见《5分钟快速搭建一个springboot的项目》,最终的结果是在”8080″端口搭建起了服…

    Java 2023年6月9日
    089
  • Java项目服务器跨域设置

    引入jar包 cors-filter-2.6 :http://central.maven.org/maven2/com/thetransactioncompany/cors-fil…

    Java 2023年6月13日
    064
  • 获取数组子序列

    /** * 位对应法 * * @param array */ public void place(int[] array) { //获取数据长度 那么对应的就是二进制字节位数1存在…

    Java 2023年6月5日
    056
  • spring boot集成mybatis 出现 nvalid bound statement (not found)

    公司新搭建的项目 再idea中进行springboot集成mybatis时项目能正常启动,但在链接数据库时提示nvalid bound statement (not found) …

    Java 2023年5月30日
    082
  • 【SpringCloud-Alibaba系列教程】3.微服务调用

    上一接,我们基本上搭建好了我们所需要微服务模块,但是我们之间如何调用呢?我们模拟一个用户下单的流程,首先我们思考一下我们的微服务调用流程,其实就是通过商品微服务进行查询商品,然后挑…

    Java 2023年6月5日
    086
  • 有道词典翻译功能数字有时无法翻译出来解决方案

    阅文时长 | 0.03分钟字数统计 | 62.4字符主要内容 | 1、引言&背景 2、解决方案 3、声明与参考资料『有道词典翻译功能数字有时无法翻译出来解决方案』 编写人 …

    Java 2023年6月5日
    0179
  • 聊聊消息中心的设计与实现逻辑

    厌烦被消息打扰,又怕突然间的安静; 一、业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理、MQ队列、缓存机制、消息中心等等,这些服…

    Java 2023年6月15日
    067
  • 你还在用BeanUtils进行对象属性拷贝?

    在做业务的时候,为了隔离变化,我们会将 DAO查询出来的 DO和对前端提供的 DTO隔离开来。大概 90%的时候,它们的结构都是类似的;但是我们很不喜欢写很多冗长的 b.setF1…

    Java 2023年6月6日
    076
  • NoteOfMySQL-07-索引

    1. 索引概述 创建索引的目的是为了优化数据库的查询速度,不添加索引的情况下需要遍历所有数据才能进行删、查、改等操作。 2. 索引存储类型 存储类型 支持的存储引擎 B型树(BTR…

    Java 2023年6月5日
    0116
  • Go学习第一天:有关环境变量及结构的解释

    环境变量 有三个变量 GOPATH、 PATH、 GOROOT: GOROOT 就是 go 的安装路径; GOPATH 就是go的项目目录; PATH是go安装路径下的bin目录。…

    Java 2023年6月7日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球