zoukankan      html  css  js  c++  java
  • Maven教程3(依赖管理)

    Maven教程2(Eclipse配置及maven项目)

    Maven项目,依赖,构建配置,以及构件:所有这些都是要建模和表述的对象。这些对
    象通过一个名为项目对象模型(Project Object Model, POM)的XML文件描述。这个POM
    告诉Maven它正处理什么类型的项目,如何修改默认的行为来从源码生成输出。同样
    的方式,一个Java Web应用有一个web.xml文件来描述,配置,及自定义该应用,一个
    Maven项目则通过一个 pom.xml文件定义。该文件是Maven中一个项目的描述性陈述;也
    是当Maven构建项目的时候需要理解的一份“地图”。

    1.maven坐标

    	<dependencies> 
    	<!-- 因为是web项目所以需要servlet --> 
    	<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>${servlet.version}</version>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
    

    1.1 dependencies

    在dependencies标签中添加需要依赖的jar对应的maven坐标

    1.2 dependency

    一个dependency标签表示一个maven坐标

    1.3groupId

    团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。来自Sonatype的项目有一个以com.sonatype开头的groupId,而Apache Software的项目有以org.apache开头的groupId,一个maven坐标必须包含一个groupId必须的

    1.4artifactId

    在groupId下的表示一个单独项目的唯一标识符。比如我们的tomcat, commons等。不要在artifactId中包含点号(.) ,必须的

    1.5version

    一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个"SNAPSHOT"的标记。
    虽然项目的打包格式也是Maven坐标的重要组成部分,但是它不是项目唯一标识符的一个部分。一个项目的 groupId:artifactId:version使之成为一个独一无二的项目;你不能同时有一个拥有同样的groupId, artifactId和version标识的项目。必须的

    1.6scope

    依赖范围

    依赖范围 编译有效 测试有效 运行时有效 打包有效 例子
    Complie spring-core
    test × × × Junit
    provided × × servlet-api
    runtime × JDBC驱动
    system × × 本地maven仓库
    之外的类库

    1.7构建索引

    构建索引便于在maven本地仓库中检索
    window --> show --> other -->maven
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    2.依赖冲突

    2.1冲突产生的原因

    graph LR A[a jar] -- 依赖 --> B((b jar)) B --依赖--> D[c jar 1.2版本]
    graph LR A[a jar] -- 依赖 --> B((d jar)) B --依赖--> D[c jar 1.3版本]

    上图中a jar包通过b和d间接依赖到的c jar包版本不一致,出现了冲突

    依赖关系 实例
    直接依赖 a和b的依赖关系
    间接依赖 a和c的依赖关系

    比如:

    <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.24</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.4.RELEASE</version>
    </dependency>
    

    在这里插入图片描述

    2.2依赖冲突解决

    2.2.1第一优先声明原则

    先定义的先使用
    在这里插入图片描述在这里插入图片描述

    2.2.2路径就近原则

    直接声明使用
    在这里插入图片描述

    2.2.3排除依赖

    排除掉两个冲突中的一个,那么另一个就自然使用了
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    2.2.4版本依赖

    在这里插入图片描述
    上一篇:Maven教程2(Eclipse配置及maven项目)
    下一篇:Maven教程4(私服)

  • 相关阅读:
    接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架
    Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
    Python 基于Python实现批量创建目录
    Loadrunner 脚本录制-通过代理录制脚本
    Clumsy 利用无线网卡结合Clumsy软件模拟弱网络测试
    Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
    Loadrunner脚本优化-参数化之关联MySQL数据库获取数据
    Postman Postman测试接口之POST提交本地文件数据
    Loadrunner 脚本开发-利用web_custom_request函数进行接口测试
    loadrunner 脚本开发-web_custom_request函数详细介绍
  • 原文地址:https://www.cnblogs.com/dengpengbo/p/10308115.html
Copyright © 2011-2022 走看看