maven笔记

1、依赖范围【scope】:编译环境(main文件夹)、测试环境(test文件夹)、运行环境(打成的war包是否可用)

  compile:测试依赖范围,缺省值上面的三个环境都可用,如log4j。

  test:只争对测试classpath有效,如junit。

  provided:只对编译环境和测试环境有效,运行阶段外部容器已提供,故不需要额外引入,如servlet-api。

  runtime:运行时依赖范围。只对测试环境,运行环境有效,如JDBC驱动实现依赖,其在编译时只需JDK提供的JDBC接口即可,只有测试、运行阶段才需要实现了JDBC接口的驱动。

  system:系统依赖范围。效果与provided的依赖范围一致。其用于添加非Maven仓库的本地依赖,通过依赖元素dependency中的systemPath元素指定本地依赖的路径。鉴于使用其会导致项目可移植性降低,一般不推荐使用。

  import:导入依赖范围。该依赖范围只能与dependencyManagement元素配合使用,其功能是将目标pom.xml文件中dependencyManagement的配置导入合并到当前pom.xml的dependencyManagement中。

2、Maven工程jar包依赖报错:

  可能本地Maven仓库或缓存被污染或损坏,导致Maven无法正确的使用现有依赖。(下载jar包丢包)

  解决方案:当jar包下载失败时Maven会在本地仓库生产(lastUpdate文件),Maven检测到(lastUpdate文件)文件后不会重新下载jar包,如下载时没网,后来又有网了也不会下载成功。删除缓存文件,重新下载即可。

3、Build构建配置【打包时的额外配】:

  如果在java文件夹中添加java类,会自动打包编译到classes文件夹下。

  但是在java文件夹中添加xml文件,默认不会被打包。

  resource下的配置文件会被打包到classes根目录下。

  应用场景:mybatis中有时会将用于编写SQL语句的映射文件和mapper接口都写在src/main/java下的某个包中,此时映射文件就不会被打包。

  <build>

    <!---自定义打包名称->

    <finalName>jar包名称.war</finalName>

    <!--设置要打包的资源位置-->    
    <resources>
      <resource>
        <!---设置资源所在目录->
        <directory>src/main/java</directory>
        <includes>
          <!---设置包含的资源类型->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>

  </build>

4、依赖传递:

  非compile范围进行依赖传递

  使用optional配置终止传递

  依赖冲突(传递的依赖已经存在)

  解决依赖冲突:路径最短者优先,路径相同,先声明优先。

  手动排除依赖。

 

posted @   record-100  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示