maven中的scope与systemPath用法

 更新时间:2023年11月13日 16:45:17   作者:代码没写完哪有脸睡觉  
这篇文章主要介绍了maven中的scope与systemPath用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

maven中的scope与systemPath

scope的分类包括以下

1.maven中scope的默认值是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

2.test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit

3.runtime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已。在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSRXXX的实现,对应的API jar是compile,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动jar包就是一个很好的例子,一般scope为runtime。 另runtime的依赖通常和optional搭配使用,optional为true。即可以用A实现也可以用B实现。

4.procided 意味着打包的时候可以不用包进去,别的设施(web container)会提供。事实上该依赖理论上可以参与编译、测试、运行等周期。相当于compile,但是打包阶段做了exclude的动作。

5.system 和provide相同,不过被依赖项不会从maven仓库抓,而是从本地系统文件拿,一定要配合systemPath使用

systemPath

当maven依赖本地而非repository中的jar包,systemPath指明本地jar包路径

参考:

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-core</artifactId>
    <version>1.5</version>
    <scope>system</scope>
    <systemPath>${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar</systemPath>
</dependency>

maven scope=system,打包打不进

maven配置

<dependency>
            <groupId>xxxx.bigdata</groupId>
            <artifactId>data-stream-submit</artifactId>
            <version>2.0.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.yaml</groupId>
                    <artifactId>snakeyaml</artifactId>
                </exclusion>
            </exclusions>
            <scope>system</scope>
            <systemPath>${basedir}/../lib/data-stream-submit-2.0.0.0.jar</systemPath>
        </dependency>

maven install lib 没有data-stream-submit 包

解决方案

<build>
        <finalName>data-integration</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                    // 添加
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Spring AI+MySQL实现文件内容相似度的简单检测

    基于Spring AI+MySQL实现文件内容相似度的简单检测

    在做一个 AI 求职的比赛项目中,遇到了一个有趣的需求:用户上传自己的简历文件后,系统需要计算并返回该简历与其他用户简历之间的相似度,想要实现这样的功能,所以本文给大家分享了如何基于Spring AI+MySQL实现文件内容相似度的简单检测,需要的朋友可以参考下
    2025-11-11
  • Java实现文件上传下载以及查看功能

    Java实现文件上传下载以及查看功能

    这篇文章主要为大家详细介绍了java如何实现文件上传和下载以及查看功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • SpringBoot基于过滤器和内存实现重复请求拦截功能

    SpringBoot基于过滤器和内存实现重复请求拦截功能

    这篇文章主要介绍了SpringBoot基于过滤器和内存实现重复请求拦截,这里我们使用过滤器的方式对进入服务器的请求进行过滤操作,实现对相同客户端请求同一个接口的过滤,需要的朋友可以参考下
    2023-01-01
  • 浅谈TreeSet中的两种排序方式

    浅谈TreeSet中的两种排序方式

    下面小编就为大家带来一篇浅谈TreeSet中的两种排序方式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • java synchronized加载加锁-线程可重入详解及实例代码

    java synchronized加载加锁-线程可重入详解及实例代码

    这篇文章主要介绍了java synchronized加载加锁-线程可重入详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • 一文带你搞懂Java中i++ 和 ++i的区别

    一文带你搞懂Java中i++ 和 ++i的区别

    在Java中,i++和++i都用于递增变量i的值,但它们之间有一个细微的区别,i++是后缀递增操作符,++i是前缀递增操作符,在大多数情况下,这两种递增操作的结果都是一样的,但在某些特定的表达式和逻辑中,它们可能会产生不同的效果,本文将带大家搞清Java中i++ 和 ++i的区别
    2023-09-09
  • Springboot如何设置多数据源,随时切换

    Springboot如何设置多数据源,随时切换

    这篇文章主要介绍了Springboot如何设置多数据源,随时切换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • spring boot微服务自定义starter原理详解

    spring boot微服务自定义starter原理详解

    这篇文章主要介绍了spring boot微服务自定义starter原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java超详细教你写一个网络购书系统案例

    Java超详细教你写一个网络购书系统案例

    这篇文章主要介绍了怎么用Java来写一个购书系统,购买书籍主要需要每本书的编号、书名、单价、库存属性,能够让客户通过编号来选书,感兴趣的朋友跟随文章往下看看吧
    2022-03-03
  • Spring框架读取property属性文件常用5种方法

    Spring框架读取property属性文件常用5种方法

    这篇文章主要介绍了Spring框架读取property属性文件常用5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论