• maven依赖管理


    依赖下载

    默认情况下,maven将在repo.maven.apache.org和hk.maven.org下载依赖包,这是仓库中心。

     首次使用时,会自动联网从仓库中心下载,在本地仓库留存副本,下一次就会直接在本地仓库查找,如果找不到(被清理了),再次到远程下载。

    但是,远程仓库不太可能让我们共享自己的jar包,同时也存在着下载速度慢的问题,所以大多数公司有自己的maven仓库

     这样,通过依赖管理可以实现仓库共享,加速下载,版本管理。

    常用的仓库管理工具有:

    nexus repository OSSicon-default.png?t=M85Bhttp://www.sonatype.com/nexus-repository-ossapache archivaicon-default.png?t=M85Bhttp://archiva.apache.org/artifactory Open Sourceicon-default.png?t=M85Bhttps://jfrog.com/open-source/#artifactory

    配置局域仓库

    1. "1.0" encoding="UTF-8" ?>
    2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    3. .......
    4. <profiles>
    5. <profile>
    6. <id>your_companyid>
    7. <repositories>
    8. <repository>
    9. <id>spring_repoid>
    10. <url>http://repo.spring.io/release/url>
    11. repository>
    12. <repository>
    13. <id>jboss_repoid>
    14. <url>https://repository.jboss.org/url>
    15. repository>
    16. repositories>
    17. profile>
    18. profiles>
    19. <activeProfiles>
    20. <activeProfile>your_companyactiveProfile>
    21. activeProfiles>
    22. .......
    23. settings>

    这里通过profiles目录配置局域网仓库,单个仓库配置使用id进行标记唯一性。通过repositories配置仓库,仓库通过id和url配置唯一键和仓库地址。最后在activeProfiles中配置激活的仓库配置,使用profile的唯一id作为指定。

    唯一的依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.hibernategroupId>
    4. <artifactId>hibernate-toolsartifactId>
    5. <version>5.4.2.Finalversion>
    6. dependency>
    7. dependencies>

    依赖有几个基本属性:

    groupId: 公司或组织id

    artifactId: 项目的唯一id

    version:版本号

    type:指定打包方式,JAR、WAR、EAR

    通常,迭代开发版本带有SNAPSHOT标记,RELEASE为发行版本,FINAL为最终稳定版本。

    直接依赖与传递依赖

    直接依赖就是你在项目中直接指定的依赖,传递依赖就是你直接依赖的项目所依赖的其他项目。

    依赖发生冲突时,会采用最近原则:

    1. 项目中使用的B存在两个版本,0.0.8和1.0.0,其中0.0.8是直接依赖,因此最终版本的0.0.8

    2. 同级的版本以来,以最先发现的版本为准,例如F存在1.0.0和2.0.0和2.2.0三个版本,则以最先出现的1.0.0为准。

    3. 如果你必须使用2.2.0版本的F,那就需要在项目中显示指定版本,这样可以满足最近原则。

    使用命令行可以查询依赖树

    mvn dependency:tree

     

    使用exclusion排除依赖

    对于不想使用的依赖,可以采用exclusion进行依赖排除。

    依赖的适用范围

    有的依赖不需要再编译期间使用,有的不需要运行期间使用,可以通过scope指定依赖的适用范围。

    范围含义
    compile适用于编译、测试、运行全阶段,默认是这个
    runtime仅运行时
    test测试有效
    system编译、测试有效,引用文件系统内的依赖文件
    provided编译、测试有效,不会被打包
    import适用于对pom的引用

     

    手动安装jar包

    mvn install:install-file -DgroupId=com.apress.gswmbook -DartifactId=test -Dversion=1.0.0 -Dfile=C:\apress\gswm-book\chapter3\test.jar -Dpackaging=jar -DgeneratePom=true

     将会自动安装到本地的仓库:

     

     

  • 相关阅读:
    如何在本地创建一个贪吃蛇小游戏node.js服务并实现无公网IP远程游玩
    微信小程序中应用van-calendar时加载时间过长,以及设置min-data无效的问题解决
    UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
    Python 之SQLAlchemy使用详细说明
    新de世界
    Ubuntu 系统安装和使用杀毒软件ClamAV
    《敏捷无敌之DevOps时代》读后感
    js基础知识整理之 —— 数组
    C/C++内存管理(malloc/calloc/realloc/free/new/delete/operator new/operator delete)
    SB30100LCT-ASEMI插件肖特基二极管SB30100LCT
  • 原文地址:https://blog.csdn.net/Day_and_Night_2017/article/details/127580722