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>
    

    以后不定期更新。。

  • 相关阅读:
    自动生成小学四则运算题目的程序.心得体会
    Github使用心得
    结对作业实验报告
    Java JWT做登录认证 IT
    该任务映像已损坏或已篡改 的修复方法
    OSI七层协议模型、TCP/IP四层模型学习笔记
    redis客户端连接数
    安装window的功能后重启电脑总是蓝屏问题
    Intellj IDEA环境配置及入门项目
    SqlServer发布订阅
  • 原文地址:https://www.cnblogs.com/skills/p/13733775.html
Copyright © 2011-2022 走看看