回顾:

1、 maven核心

a) 依赖管理:对jar统一管理。根据坐标(groupId,artifactId,version)去找jar包,本地,私服,中央仓库

b) 项目构建:通过命令构建。clean,compile,test,package,install,deploy

2、 pom.xml

a) 当前项目坐标信息

b) Jdk插件,tomcat插件

c) 依赖信息

 

 

传递依赖冲突解决(了解)

传递依赖:A(项目)依赖B,B依赖C。B称为A的直接依赖,C称为A传递依赖。

A依赖B,B依赖C(1.1)

A依赖D,D依赖C(1.5)

 

1.1 Maven提供

1.1.1 第一声明者优先原则

谁先定义的就优先使用谁的传递依赖。

1.1.2 路径近者优先原则

直接依赖级别大于传递依赖。

1.2 排除依赖

 

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-spring-plugin</artifactId>

<version>2.3.24</version>

<exclusions>

<exclusion>

<artifactId>spring-beans</artifactId>

<groupId>org.springframework</groupId>

</exclusion>

</exclusions>

</dependency>

1.3 版本锁定(项目中会用到的方式)

<properties>

<spring-version>4.2.4.RELEASE</spring-version>

</properties>

<!-- 指定项目中用到依赖信息版本 -->

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring-version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${spring-version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring-version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-asm</artifactId>

<version>${spring-version}</version>

</dependency>

</dependencies>

</dependencyManagement>

使用maven整合ssh框架(重点)

2.1 pom.xml

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>maven_ssh_61</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <!-- 属性 -->
<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> <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency> </dependencies>
</dependencyManagement> <!-- 依赖管理 -->
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency> <!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!-- c3p0 --> <dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- 导入 struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency> <!-- servlet jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
</dependencies> <build>
<plugins>
<!-- 设置编译版本为1.7 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>

2.2 配置文件加载过程

 

2.3 分别搭建框架

1、 搭建hibernate环境

a) 在classpath下创建核心配置文件:hibernate.cfg.xml

2、 搭建spring环境

a) 在classpath下创建配置文件:applicationContext.xml

b) Web.xml中配置监听器

3、 搭建struts2环境

a) 在classpath下创建配置文件:struts.xml

b) 在web.xml配置核心过滤器

2.4 整合框架

2.4.1 Spring-hibernate整合

关键点:1、数据源配置  2、SessionFactory对象创建  3、事务管理

 

在spring配置文件中配置:

db.properties

 jdbc.driverClass = com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/maven
jdbc.user=root
jdbc.password=root

applicationContext.xml中: <context:property-placeholder location="classpath:db.properties"/>
<!-- 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
<!-- 也可以通过注入hibernate配置信息 -->
</bean> <!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!-- 注解方式管理事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

2.4.2 Struts2-spring整合

关键点:action对象交给spring创建

 

 

1、 创建action类

2、 将action对象配置到spring文件中

3、 在struts.xml中action节点  class属性=action对象bean的id

 

2.5 需求:查询客户信息

地址栏中:http://localhost:8080/project/customerAction_findOne.action?custId=1

 

1、 创建dao,service,接口跟实现类

2、 IOC 将dao,service对象在spring配置文件

3、 添加属性,生成set方法。在spring配置文件中注入对象

4、 在action创建findOne方法;

5、 创建客户实体、映射文件。将映射文件引入hibernate核心配置文件中

6、 配置结果视图。

使用maven对项目拆分、聚合(重点)

对现有的项目进行拆分,将dao层代码(源代码,配置文件),都提取工程中:ssh-dao,servivce,web层使用同样的方式进行拆分。

ssh-parent:

  ssh-dao:jar

  ssh-service:

  ssh-web:

 

对拆分项目进行聚合,为了达到聚合目的,提出概念:父工程

 

3.1 创建父工程 ssh-parent

 

 

创建好的父工程:推断父工程不进行编码;将项目中用到的依赖定义;jdk版本在父工程中。

将依赖信息,jdk 插件定义在父工程pom.xml中

 

3.2 将父工程打包到本地仓库

如果忘记,将来打service项目到本地仓库,会报错。到时将父工程直接打包到本地仓库:父工程下所有的子模块都会打包到本地仓库。

 

3.3 创建子模块:ssh-dao

此工程中:存放数据访问层代码

 

 

 

创建好的子模块ssh-dao:

 

 

 

 

将dao层相关代码移到ssh-dao工程。

 

 

 

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-*.xml")
public class CustomerDaoTest { @Autowired
private CustomerDao customerDao;
@Before
public void setUp() throws Exception {
} @Test
public void testFindOne() {
customerDao.findOne(1l);
}
}

3.4 创建子模块:ssh-service

 

 

3.4.1 传递依赖范围(了解)

传递依赖不是不限传递,通过设置依赖scope作用范围控制。

 

 

A:ssh-serivce

B:ssh-dao

C:junit

 

结论:当发现某个依赖没有传递过来,在本工程中添加依赖。

 

3.5 创建子模块:ssh-web

 

Web.xml

 

3.6 运行项目

Maven提供:

1、 直接运行web项目

2、 运行父工程:将各个子模块聚合到一起,再运行web项目

 

Tomcat运行

私服(应用)

 

4.1 下载安装

1、资料,解压

 

3、 使用管理员身份运行命令行:

 

4、 安装服务,启动服务

 

 

5、 私服访问路径:http://localhost:8081/nexus/#welcome

6、 登陆私服  admin/admin123

4.2 私服上仓库分类

 

Hosted:宿主仓库,一般存放本公司开发jar包

本公司测试版本,正式版本jar包。第三方jar包(一般存在版权问题,比如oracle驱动包)

Proxy:代理仓库

代理中央仓库,Apache下测试版本jar包

 

Group:组仓库

包含宿主仓库,代理仓库,将来连接组仓库即可。

 

Virtual:虚拟仓库  maven1仓库,废弃

 

4.3 将jar包发布到私服(应用)

1、 在MAVEN_Home/conf/settings.xml中,配置私服认证信息(登陆信息)

<server>

<id>releases</id>

<username>admin</username>

<password>admin123</password>

</server>

<server>

<id>snapshots</id>

<username>admin</username>

<password>admin123</password>

</server>

 

2、 在将要上传项目pom.xml中,配置上传url地址

<distributionManagement>

<repository>

   <id>releases</id>

<url>http://localhost:8081/nexus/content/repositories/releases/</url>

</repository>

<snapshotRepository>

    <id>snapshots</id>

<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

 

3、 执行命令:deploy

 

 

4.4 将jar包从私服上下载到本地仓库(应用)

1、 在MAVEN_Home/conf/settings.xml中配置模板(知道从哪下载jar包)

<profile>
<!--profile的id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
<id>nexus</id>
<!--仓库地址,即nexus仓库组的地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载releases构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>

2、 激活模板

<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

3、 测试

Maven干货2的更多相关文章

  1. Maven干货

    好处: 1. 依赖管理:对jar包统一管理 2. 项目构建: 项目编码完成后,对项目进行编译.测试.打包.部署.之前项目构建通过eclipse工具实现.今天学习新的工具也可以实现这些过程.比如:通过m ...

  2. 纯干货!华为软件开发云编译构建之Maven

    一.Maven介绍 Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使用了一个标准的目 ...

  3. 「干货分享」模块化编程和maven配置实践一则

    ​ 封面 说到模块化编程,对我个人而言首先起因于团队协作的需要,也就是组织架构结构特点来决定,而不是跟风求得自我认同,看看我们团队的组织结构: ​ 其中: 基础平台部职责: 1.AI实验室:语音,图像 ...

  4. 项目管理01--使用Maven构建项目(纯干货)

    目录 1. Maven基础知识 2. Maven实战.开发.测试.打包.部署一个Web项目 一.Maven基础知识 Maven坐标 Maven提供了一个中央仓库,里面包含了大量的开源软件的jar包,只 ...

  5. 基于分布式、服务化的maven项目文件规划

    引言 此文不是纯粹介绍maven概念,而是介绍一个具体的maven项目文件规划 这个规划可能适合于研发比较复杂的业务,这些业务有分布式和服务化的需要. 这个规划能够解决因为分布式和服务化要求而引起的项 ...

  6. Maven学习总结(一)——Maven入门

    原博文出自于:http://www.cnblogs.com/xdp-gacl/p/3498271.html 感谢! 一.Maven的基本概念 Maven(翻译为"专家"," ...

  7. 【转】IntelliJ IDEA2016.1 + maven 创建java web 项目

    最近开始使用idea 来写java项目了,这个很流行,相比Eclipse方便了很多.功能多了,相对应的使用的复杂度也较高了,因为网上很多的使用和创建项目的简单教程,都是基于老版本的,每个新版本都有不一 ...

  8. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  9. Maven学习专题--Maven入门及安装

    因为项目需要,新项目需要使用Maven开发,但是组内大部分没有接触过maven.我就毅然承担搭建maven环境的任务了.因为一切重头开始,就想把自己的整个搭建环境.项目创建.框架整合和模块管理整个过程 ...

随机推荐

  1. 论MyBatis日志

    Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 具体选择哪个日志 ...

  2. C#调用TSC条码打印机打印条码

    #region 调用TSC打印机打印条码 /// <summary> /// 调用TSC打印机打印条码 /// </summary> /// <param name=&q ...

  3. GridView七十二绝技-大全(收藏版)(转至别人博客)

    快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠 ...

  4. Oracle数据库中的重要对象

    数据库中的重要对象:表.视图.序列.函数.存储过程.索引.同义词1.表:用PL/SQL Developer 软件打开 Scott的DEPT表查看SQL,可以看见DEPT表创建的脚本-- Create ...

  5. 超好用的memcache管理及可视化监控工具,真方便!

    memcache做为主流的缓存数据库之一,广泛在各互联网平台使用,但是大家使用中都知道memcache目前没有一个比较好用的可视化客户端工具,每次都要输入命令进行操作,十分不方便.  而另一款主流缓存 ...

  6. PB程序源码文件结构 pbl文件 pbd文件

    最近公司给了一套PB的源码,一个8.0,一个9.0,让给一个客户做软件整合,之前只听过PB看过别人写代码,为了快速上手,了解了一下PB的文件,记录如下:pbl为pb源码文件 pbd为程序编译后的文件 ...

  7. POJ 2289 Jamie's Contact Groups / UVA 1345 Jamie's Contact Groups / ZOJ 2399 Jamie's Contact Groups / HDU 1699 Jamie's Contact Groups / SCU 1996 Jamie's Contact Groups (二分,二分图匹配)

    POJ 2289 Jamie's Contact Groups / UVA 1345 Jamie's Contact Groups / ZOJ 2399 Jamie's Contact Groups ...

  8. 2、微信小程序之弹幕的实现(无后台)

    对弹幕功能主要利用环信来实现的,读者也许对环信这个东西很陌生,请先自行了解这环信再来看这文章. 环信开发文档:http://docs.easemob.com/im/400webimintegratio ...

  9. HTTP权威指南-连接管理

    现在已经开始学习到第四章咯,坚持就是胜利哟~!ok,废话少说,继续写笔记. 本章中我们要介绍到HTTP的连接.好,现在有几个问题,我列出来了,带着这几个问题,我们进入本章的学习. 1.HTTP是如何使 ...

  10. redis 订阅与发布

    PUBLISH,SUBSCRIBE,等命令实现订阅与发布 订阅/发布到频道 订阅/发布到模式   频道的订阅与信息发送   订阅subscribe,可以让客户端订阅任意数量的频道, 每当有新信息发送到 ...