1. 传递依赖冲突

1.1 传递依赖:A(项目)依赖B,B依赖C(1.1版本),B是A的直接依赖,C是A的传递依赖;
A(项目)又依赖D,D依赖C(1.2版本),此时,C有两个版本,产生冲突;
1.2 Maven 的调解原则
- 第一声明者优先原则: 谁先定义,就用谁的传递依赖;
- 路径近者优先原则: 直接依赖级别高于传递依赖;
1.3 排除依赖

1.4 版本锁定(推荐)

2. 整合SSH框架

2.1 SSH 配置文件加载过程

3. 项目拆分

3.1 对现在已有 maven ssh 项目进行拆分,拆分思路: 将DAO层代码和配置文件全部提取到一个表现上独立

的工程中;另外,也将 service, action 拆分;

  • ssh-parent(父工程)

    • ssh-dao(子模块)
    • ssh-service
    • ssh-web

3.2 创建父工程

  • Maven Project
  • 包的类型: pom
  • 父工程目录结构:只有 pom.xml,父工程不进行编码;
  • 项目需要的依赖信息,在父工程中定义,子模块继承;
  • 将各个子模块聚合到一起;

3.2.1 将父工程发布到本地仓库(Maven install)
  • service,dao过程也会发布到本地仓库,如果本地仓库中没有父工程,发布的 service 工程会报错;

3.3 创建子模块 ssh-dao

  • Maven Module
  • 包的类型: jar
  • 包含dao层代码和配置文件
  • 将spring的配置文件applicationContext.xml进行拆分:
    • applicationContext-basic.xml: 存放dataSource,sessionFactory和事务管理的配置;
    • applicationContext-dao.xml: 存放dao对象的配置;
  • 发布到本地仓库: maven install;

3.4 创建子模块 ssh-service

  • 在service工程 pom.xml 文件中添加 ssh-dao 的依赖;

3.5 创建子模块 ssh-web

  • 包的类型: war,因为需要处理页面;
  • 需要导入 struts.xml 配置文件;
  • 需要导入 web.xml 配置文件以及页面;
    • "classpath:applicationContext-.xml"

3.6 单元测试

  • classpath:spring/applicationContext-*.xml: 加载本项目中的配置文件;
  • classpath*:spring/applicationContext-*.xml: 既要加载本项目中配置文件,也要加载jar包中配置文件

3.7 传递依赖范围

3.8 运行

  1. 方式一:运行父工程,父工程将各个子模块聚合到一起; 将 ssh-web 项目打成war包发布到 tomcat;
  2. 方式二:直接运行 ssh-web 项目;
  3. 方式三:自己手动部署到 tomcat 上;

参考资料

Maven 整合SSH框架的更多相关文章

  1. maven学习记录三——maven整合ssh框架

    6       整合ssh框架 6.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 6.2     依赖版本冲突的解决 1.  第 ...

  2. maven整合ssh框架笔记

    具体工程会上传文件sshpro <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:x ...

  3. Maven 整合 SSH 框架

    前面的一系列文章中,我们总结了三大框架:Struts2,Hibernate,Spring 的基本知识.本篇就姑且尝试着使用 Maven 这个项目构建工具来将这三个框架整合一起.说到这里,如果有对 Ma ...

  4. 使用 IDEA和Maven 整合SSH框架

    1.创建web工程 一路next 下去就行.完成后,IDEA会自动构建maven工程. 2.创建如下项目结构 需要将 java文件夹设置为SourcesRoot目录,否则无法创建package 设置操 ...

  5. Maven整合SSH框架的所有依赖和插件(记录下来,省的以后再写)

    JDK:1.8 Tomcat:7 Maven:3.6.1 调了一个小时,终于没错误了,总结了一个规律,如果在用Tomcat插件启动项目时报错,显示如:org.apache.tomcat.util.bc ...

  6. Maven 整合SSH框架之pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  7. 使用IDEA完成maven整合SSH框架时抛出Hibernate : Mapping (RESOURCE) not found

    切入主题,看看今天的错误是如何发生的: 首先这是我的项目路径,java 是 Sources Root , resources 是 Resources Root ,放了所需要的配置文件,其中 Hiber ...

  8. Maven项目整合SSH框架

    ---------------------siwuxie095                                         Maven 项目整合 SSH 框架         创建 ...

  9. maven项目ssh框架的整合

    1.环境 eclipse版本:Eclipse Mars2 4.5jdk版本:1.8maven版本:apache-maven 3.3.9zhnegs这是主要的开发工具版本,ssh的各种jar包版本就不列 ...

随机推荐

  1. C语言第十一回合:预处理命令的集中营

    C语言第十一回合:预处理命令的集中营   [学习目标]   1.         宏定义 2.         文件包括"处理 3.         条件编译 预处理命令:能够改进程序设计的 ...

  2. redis命令_ZREVRANGEBYSCORE

    ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 返回有序集 key 中, score 值介于 max 和 min 之间(默 ...

  3. unity shader(二)

  4. ORACLE中NVL和COALESCE的区别

    nvl(COMMISSION_PCT,0)如果第一个参数为null,则返回第二个参数如果第一个参数为非null,则返回第一个参数 COALESCE(EXPR1,EXPR2,EXPR3...EXPRn) ...

  5. iOS swift HandyJSON组合Alamofire发起网络请求并转换成模型

    在swift开发中,发起网络请求大部分开发者应该都是使用Alamofire发起的网络请求,至于请求完成后JSON解析这一块有很多解决方案,我们今天这里使用HandyJSON来解析请求返回的数据并转化成 ...

  6. MySQL5.7的配置文件

    5.7  /etc/mysql/mysql.conf.d/mysqld.cnf 5.6  /etc/my.cnf  或  /etc/mysql/my.cnf

  7. ZABBIX监控原理

    zabbix实现原理及架构详解   想要用好zabbix进行监控,那么我们首要需要了解下zabbix这个软件的实现原理及它的架构.建议多阅读官方文档. 一.总体上zabbix的整体架构如下图所示: 重 ...

  8. 第一百四十二节,JavaScript,封装库--运动动画和透明度动画

    JavaScript,封装库--运动动画和透明度动画 /** yi_dong_tou_ming()方法,说明 * * yi_dong_tou_ming()方法,将一个元素,进行一下动画操作 * 1,x ...

  9. HashTable类

    HashTable类不紧可以像Vector类一样动态的存储一系列的对象,而且对存储的每一个对象(称为值)都安排另一个对象(称为关键字)与它相关联. 用做关键字的类必须覆盖Object.hashCode ...

  10. Vector类与Enumeration接口

    Vector类用于保存一组对象,由于java不支持动态数组,Vector可以用于实现跟动态数组差不多的功能.如果要将一组对象存放在某种数据结构中,但是不能确定对象的个数时,Vector是一个不错的选择 ...