前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Maven教程3(依赖管理)

Maven教程3(依赖管理)

作者头像
用户4919348
修改2019-04-18 15:18:02
6660
修改2019-04-18 15:18:02
举报
文章被收录于专栏:波波烤鸭波波烤鸭

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

1.maven坐标

代码语言:txt
复制
<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冲突产生的原因

图片.png
图片.png

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

依赖关系

实例

直接依赖

a和b的依赖关系

间接依赖

a和c的依赖关系

比如:

代码语言:txt
复制
<!-- 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版本依赖

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年01月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.maven坐标
    • 1.1 dependencies
      • 1.2 dependency
        • 1.3groupId
          • 1.4artifactId
            • 1.5version
              • 1.6scope
                • 1.7构建索引
                • 2.依赖冲突
                  • 2.1冲突产生的原因
                    • 2.2依赖冲突解决
                      • 2.2.1第一优先声明原则
                      • 2.2.2路径就近原则
                      • 2.2.3排除依赖
                      • 2.2.4版本依赖
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档