zoukankan      html  css  js  c++  java
  • Maven知识点

    经常遗忘的知识点

    Maven依赖Scope

    scope(依赖范围) 编译 测试 运行 举例 备注
    compile Y Y Y spring-core 默认值
    provided Y Y N jdk、servlet-api
    test N Y N Junit
    system Y Y N 本地的,Maven仓库之外的类库文件
    runtime N Y Y JDBC驱动实现
    1. 当依赖的scope为compile的时候,那么当前这个依赖的包,会在编译的时候将这个依赖加入进来,并且在打包(mvn package)的时候也会将这个依赖加入进去。

    2. 当依赖的scope为provided的时候,在编译和测试的时候有效,在执行(mvn package)进行打包成war包的时候不会加入,比如:servlet-api,因为servlet-api,tomcat等web服务器中已经存在,如果在打包进去,那么包之间就会冲突。

    3. 当依赖的scope为test的时候,指的的是在测试范围有效,在编译与打包的时候都不会使用这个依赖。

    4. runtime:运行时依赖范围。对于测试与运行classpath有效,但在编译时无效,典型的是JDBC驱动,项目只需要编译JDK提供的JDBC接口,只有在测试和运行项目时才需要实现具体的上述接口的JDBC驱动。

    5. System:系统依赖范围。该依赖与三种classpath关系与provided范围一致。使用system范围依赖时必须通过systempath显示指定依赖文件位置,通常不是通过maven仓库解析,往往与本机系统绑定。

    举一个应用system的例子,以前写过一个modbus协议master端的java解析器,用过一个外部的jar包,就是用的system进行约束的。

    <!-- 本地的jar包打成jar包或者war包 -->
        <dependency>
          <groupId>seroutil</groupId>
          <artifactId>seroutil</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <scope>system</scope>
          <systemPath>${basedir}/src/main/resources/lib/seroUtils.jar</systemPath> <!-- ${basedir} 是当前项目里的路径和pom.xml同级的路径-->
        </dependency>
    

    以后不定期更新。。

  • 相关阅读:
    navicat设置唯一
    H5图片防盗链处理
    jar包更新
    微信小程序开发工具“当前系统代理不是安全代理”
    Set和Map
    OSS先后上传相同地址的图片
    js遍历删除数组中不符合条件的元素
    SSL配置
    关于socket.io获取客户端真实IP地址
    请在微信客户端打开链接 html
  • 原文地址:https://www.cnblogs.com/skills/p/13733775.html
Copyright © 2011-2022 走看看