maven 实战

1、传递依赖冲突解决

  • 传递依赖:A(项目)依赖B,B依赖C,C就是A的传递依赖,B就是A的直接依赖。
  • 举例:如果A项目依赖了Bjar包,Bjar包依赖Cjar包(1.1版本),但是导入依赖Djar包,D却依赖Cjar包(1.2版本),这样就产生了传递冲突依赖。
  • maven自己调解原则

    • 第一声明者优先原则

      • 谁先定义的就用谁的传递依赖。  
    • 路径近者优先原则
      • 直接依赖级别高于传递依赖。  
  • 排除依赖

<dependencies>
      <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.30</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
            </exclusion>
        </exclusions>
      </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.4.RELEASE</version>

    </dependency>
  </dependencies>

  • 版本锁定(推荐使用)
  <!-- 版本锁定:指定项目中依赖的版本    dependencyManagement只会锁定版本号,并不会产生依赖jar包-->
  <dependencyManagement>
      <dependencies>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-beans</artifactId>
              <version>4.2.4.RELEASE</version>
          </dependency>
      </dependencies>
  </dependencyManagement>
<!-- 版本锁定:指定项目中依赖的版本 -->
  <dependencyManagement>
      <dependencies>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-beans</artifactId>
              <version>4.2.4.RELEASE</version>
          </dependency>
      </dependencies>
  </dependencyManagement>

  <dependencies>
      <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.30</version>

      </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.4.RELEASE</version>
    </dependency>
  </dependencies>

【注意】:如果按照这种方式的话,将来spring框架升级了,那么我就需要在每个spring的jar包的版本哪里修改,太麻烦了,怎么办?将版本,设置到一个地方,就是提取版本号设置到属性标签中。

 <!-- 属性 -->
  <properties>
      <spring.version>4.2.4.RELEASE</spring.version>
      <hibernate.version>5.0.7.Final</hibernate.version>
      <struts.version>2.3.24</struts.version>
  </properties>

<!-- 版本锁定:指定项目中依赖的版本 ,并不会产生依赖jar包 -->
  <dependencyManagement>
      <dependencies>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-beans</artifactId>
              <version>${spring.version}</version>
          </dependency>
      </dependencies>
  </dependencyManagement>

2、通过maven整合SSH框架

3、通过maven对项目进行拆分、聚合

4、私服应用

时间: 2024-11-02 00:10:32

maven 实战的相关文章

[Maven实战](9)传递性依赖

了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包.如果不使用Maven,那么在项目中就需要手动下载相关的依赖.由于Spring Framework又会依赖与其他开源类库,因此实际中往往会下载Spring Framework的jar包,还的下载所有它依赖的其他jar包.这么做往往就引入了很多不必要的依赖.另一种做法是只下载Spring Framework的jar包,不包含其他的相关依赖,到实际使用的时候,再根据报错信息,或者查询相关文档,加入需要

Maven实战05_背景案例学Maven模块化

1:简单的账户注册服务 注册互联网账户是日常生活中再熟悉不过的一件事,作为一个用户,注册账户的时候需要进行以下操作,提供以下信息. 提供一个未被使用的帐号ID 提供一个未被使用的email地址. 提供一个任意的显示名称 设置安全密码,并重复输入以确认 输入验证码 前往邮箱查收激活链接并单击激活帐号 登录确认激活状态 帐号的ID和密码唯一的标识某个账户,显示名称用来在页面上显示,方便浏览.注册时需要用户输入两次密码,以确保没有输错.系统则负责检查ID和email的唯一性,验证两次输入的密码是否一致

Maven实战之初识MavenMaven的简单介绍

Maven实战之初识MavenMaven的简单介绍 作用:Maven主要用于项目的构建,管理项目的依赖以及项目的信息(自动化构建.编译.单元测试.生成文档.打包.部署) 优势:相对于Ant.Make等,Maven抽象构建过程,提供构建任务的实现,自动化构建,有效地提高了开发效率,使开发人员可以集中精力在主要的开发任务上.而且Maven是跨平台工具,意味着在主流操作系统中,Maven都提供了对应的技术支持 使用注意:需要在JDK1.4及以上版本使用 Maven的安装下载地址:Maven下载地址,选

Maven实战:Maven生命周期

前言 之前有写过一篇文章Maven实战,介绍了Maven的一些基本概念,以及对于一个初学者而言的Maven基础知识,当时在我看来掌握了这些基本是够用的. 随着工作的深入,越来越感觉对于Maven的理解不够,很多时候使用Maven出了问题都无法很快地解决,因此打算深入地从搭建Maven工程开始学习一下Maven,这篇文章就将自己的学习历程记录下来和网友朋友们分享. 从搭建最简单的Maven项目开始 LZ使用的是MyEclipse,那么就是用MyEclipse搭建一个简单的Maven项目.第一步,n

Maven实战(四)——基于Maven的持续集成实践

Martin的<持续集成> 相信非常多读者和我一样.最早接触到持续集成的概念是来自Martin的著名文章<持续集成>.该文最早公布于2000年9月,之后在2006年进行了一次修订.它清晰地解释了持续集成的概念.并总结了10条实践,它们分别为: 仅仅维护一个源代码仓库 自己主动化构建 让构建自行測试 每人每天向主干提交代码 每次提交都应在持续集成机器上构建主干 保持高速的构建 在模拟生产环境中測试 让每一个人都能轻易获得最新的可运行文件 每一个人都能看到进度 自己主动化部署 原始文章

maven实战系列

Maven实战(一)安装和配置 Maven实战(二)构建简单Maven项目 Maven实战(三)Eclipse构建Maven项目 Maven实战(四)生命周期 Maven实战(五)坐标详解 Maven实战(六)依赖   MyEclipse6.5 在线安装maven插件的地址: http://repository.sonatype.org/content/sites/forge-sites/m2e/0.10.0/S/20100209-0800/

Maven实战(一)搭建Nexus伺服器

在搭建伺服器之前我们先要说明一下为什么要搭建伺服器以及伺服器的作用是什么.在进行分布式开发中maven工具的使用能够极大的提高我们管理项目颗粒的效率,既然是管理颗粒那总得有地方存放才行,而伺服器扮演的就是这么一个角色,它相当于一个中型仓库,上联Maven的中央仓库,下联我们的本地仓库,当我们在本地编程的时候,如果需要引用jar包,maven首先会在本地仓库进行查找,如果在本地仓库找不到则会去伺服器上进行寻找,如果在伺服器上仍然找不到则会通过互联网从maven中央仓库进行下载.它的结构图如下: 大

《Maven实战》笔记-1-Maven使用入门

<Maven实战>徐晓斌 2011 机械工业出版社 一.介绍 1.名词 artifact:插件 极限编程XP 2.构建脚本: maven--pom.xml(Project Object Model) ant--build.xml 其基本结构是目标(target).依赖(depends),以及实现目标的任务. 3.maven vs ant Ant是过程式的,开发者显示指定每一个目标,以及完成该目标所需要执行的任务. Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现. 4.相

[Maven实战](8)依赖配置与依赖范围

 1. 依赖配置 依赖基本配置: <project> <dependencies> <dependency> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <exclusions> <exclusion> <groupId>...</groupId>

Maven实战(六)依赖

我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明如下: <project> ... <dependencies> <dependency> <groupId>group-a</groupId> <artifactId>artifact-a</artifactId> <version>1.0</version> <exc