第一天:Maven基础<br /> <br />Maven是Apache公司的开源项目,是项目的构建工具,用来依赖管理。<br />1、maven的好处<br /> 同样的代码,实现的功能,Maven项目的空间非常小,推断:Maven项目没<br />有jar包。<br />2、maven的好处如何实现<br /> 两大核心:<br /> 依赖管理:对jar包管理过程<br /> 项目构建:项目在编码完成后,对项目编译、测试、打包、部署等一系<br />列操作都通过命令来实现<br /> 通过maven命令将web项目发布到tomcat:<br /> mvn tomcat:run<br />3、maven的安装、配置本地仓库<br /> (1)下载maven-3.3.9版本(略)<br /> (2)解压到本地磁盘(解压目录不要带有中文、空格)<br />(3)配置系统环境变量 <br /> 将M2_HOME环境变量配置到path环境变量中:<br /> <br /> 通过mvn-v命令查询本地Maven配置: <br /> (4)配置本地仓库<br /><br /> 在conf/settings.xml设置:<br /> <br />4、maven项目标准目录结构<br /><br />5、maven的常用命令<br /> clean:清理<br /> 将根目录下的target目录删除<br /> compile:编译<br /> 将项目中的.java文件编译为.class文件<br />test:单元测试<br /> 单元测试类的类名:XXXTest<br /> 项目的src/test/java内的单元测试类都会执行<br /> package:打包<br /> web project : war包<br /> java project: jar包<br /> 打包到项目的target目录内<br /> install:安装<br /> 解决本地项目共用一个jar包<br /> 打包到本地仓库<br /> <br />6、Maven的生命周期<br /> 在maven中存在三套生命周期,每一套生命周期相互独立,互不影响。<br /> 在一套生命周期内,执行后面的命令,前面的命令会自动执行。<br /> (1)CleanLifeCycle:清理生命周期<br /> 命令:clean<br /> (2)defaultLifeCycle:默认生命周期<br /> 命令:complie,test,package,install,deploy(部署)<br /> (3)siteLifCycle:站点生命周期<br /> 命令:site<br /> <br />7、配置eclipse的Maven插件<br /> Eclipse自带Maven插件。所以无需下载,只需要进行配置即可。<br /> <br /> <br /> <br />8、maven整合web项目案例<br /> (1)整合servlet<br /> 第一步:创建maven项目<br /> <br /> <br /> 第二步:修改jdk的版本<br /> 在pom.xml中配置:<br /> <build><br /> <plugins><br /> <plugin><br /> <groupId>org.apache.maven.plugins</groupId><br /> <artifactId>maven-compiler-plugin</artifactId><br /> <configuration><br /> <source>1.8</source><br /> <target>1.8</target><br /> <encoding>UTF-8</encoding><br /> </configuration><br /> </plugin><br /> </plugins><br /> </build><br /> 第三步:添加web.xml<br />  <br /> 第四步:创建servlet,缺少jar包(略)<br /> 第五步:查找依赖<br /> <br /> 依赖范围:<br /> <br /> 总结:如果使用tomcat自带的jar包,就要将依赖作用范围设置为<br />provided<br />第六步:运行调试maven项目<br /> (1)运行状态下:<br /> <br />(2)调试状态下:<br /> <br /> <br />(2)整合struts2<br /> 第一步:创建Maven工程(上同,略)<br /> 第二步:修改jdk的版本(略)<br /> 第三步:添加web.xml<br /> <br /> 第四步:添加struts2的依赖<br /> 配置阿里云镜像<br /> 添加struts2核心包的依赖<br /> UpdateProject<br /> 第五步:配置核心过滤器(略)<br /> 第六步:编写和配置Action(略)<br /> <br />9、概念模型<br /> <br /> <br /> 第二天<br />1、传递依赖冲突解决(了解)<br /> 依赖:就是jar包<br /> 传递依赖:A依赖B,B依赖C(1.1版本),B是A的直接依赖,C是A的<br />传递依赖。<br /> 再导入依赖D,D依赖C(1.2版本),此时出现版本重复问题<br /> 例如:A(项目),B(struts2核心包),C(struts2依赖包)<br /> (1)Maven自己调解原则<br /> 例子:整合SSH时出现包重复<br /> <br /> A、第一声明者优先原则<br /> 谁先定义就用谁的依赖包<br /> B、路径近者优先原则<br /> 级别:直接依赖 > 传递依赖<br /> (2)排除依赖<br /> 简单操作:<br /> <br /> 形成代码:<br /> <br /> (3)版本锁定(推荐使用)<br /> 代码实现:Maven_SSH<br />2、SSH框架的配置文件加载过程<br />  <br />3、通过Maven整合SSH框架(重点)<br /> (1)搭建struts2环境<br /> 第一步:创建struts2配置文件:struts.xml<br /> 第二步:在web.xml中配置struts2核心过滤器<br /> (2)搭建spring环境<br /> 第一步:创建spring配置文件:applicationContext.xml<br /> 第二步:在web.xml中配置监听器<br /> (3)搭建Hibernate环境<br /> 第一步:创建Hibernate配置文件:hibernate.cfg.xml<br /> (4)整合struts2和spring<br /> 整合关键点:ation对象创建,交给spring创建<br />1、创建action类<br />2、将action对象配置到spring配置文件中<br />3、在struts.xml中在ation节点中class属性配置为spring工厂中<br />Action对象bean的id<br /> (5)整合Hibernate和spring<br /> 整合关键点:1、数据源交给spring 2、SessionFactory对象创建交给<br />Spring创建 3、事务管理<br /> (6)功能实现<br /> 需求:查询所有客户的信息<br /> <br />4、 通过Maven对项目进行拆分、聚合(重点)<br /> 对已有的Maven_SSH项目进行拆分<br /> 思路:将dao层的代码以及配置文件全提取出来到一个表现上独立<br />的工程中。同样service,action层也一样拆分。<br /> SSH-parent<br /> SSH-Dao<br /> SSH-Service<br /> SSH-Web<br /> 拆分完成后,对拆分后的项目进行聚合,提出概念父工程。<br /> (1)创建父工程<br /> <br /> 创建好的父工程结构:只有pom.xml,可以推断父工程不进行编码<br /> <br />1、项目需要的依赖信息,在父工程中定义,子模块继承<br />2、 将各个子模块聚合到一起<br /> (2)将创建好的父工程发布到本地仓库<br /> 将来service,dao工程发布到本地仓库,找不到父工程会报错。<br /> (3)创建子模块SSH-Dao<br /> 选中父工程,然后创建Maven Module。<br /> <br /> 打包方式选择为jar:<br /> <br /> 1、SSH-Dao模块负责数据访问层:包含dao相关的代码和配置<br />文件<br /> 2、将spring的配置文件进行拆分<br /> :项目基础信息<br /> :dao层的bean对象<br /> <br /> 3、测试customerDao类的方法是否可用<br /> 整合spring的单元测试<br /> <br /> (3)创建子模块SSH-Service<br /> 创建过程如上,不重复(略),打包方式为:jar<br />1、SSH-Service模块负责业务层:包含service相关代码和配<br />置文件<br /> 2、在pom.xml中添加SSH-Dao的依赖<br /> <br /> (3)创建子模块SSH-Web<br /> 创建过程如上,不重复(略),打包方式为:war<br />1、将Maven-SSH项目的web.xml和index.jsp复制过来<br />2、修改web.xml<br /><br /> (4)单元测试<br /> 1、批量加载spring配置文件<br /> A、classpath:applicationContext-*.xml <br />加载本项目的多个配置文件<br /> B、classpath*:applicationContext-*.xml<br /> 既加载本项目的配置文件,还可以加载jar包的配<br />置文件<br /> 2、传递依赖的范围(了解) <br />总结:当项目中需要的某一个依赖没有传递过来,在自己的工程 中添加对应依赖即可。<br /> (5)运行方式<br /> Maven方式:<br /> 方式1:运行父工程。父工程将各个子模块聚合到一起,最<br />终将SSH-Web打成war包发布到tomcat中。<br /> 方式2:直接运行SSH-Web工程。 <br /> 传统方式:<br /> 可以将SSH-Web工程部署到tomcat中,从而运行tomcat ,来访问SSH-Web工程。 <br />5、私服应用(了解)<br />(1)私服安装<br /> 1、下载安装包<br /> <br /> 2、解压到本地磁盘G:/Maven-Server<br /> <br /> 3、用管理员身份进入dos界面,执行命令安装私服 <br /> nexus install<br />4、用管理员身份进入dos界面,执行命令开启服务<br /> nexus start<br />5、访问的url: [http://localhost:8081/nexus](http://localhost:8081/nexus)<br />6、登陆<br /> 默认账号密码: admin admin123<br />(2)私服上仓库的类型<br /> <br /> hosted:宿主仓库<br /> 存放本公司开发的jar包(正式版本、测试版本、第三方:存在版本<br />问题-Oracle)<br /> proxy:代理仓库<br /> 代理中央仓库,Apache下测试版本的jar包<br /> group:组仓库<br /> 将来连接组仓库。包含hosted:宿主仓库,proxy:代理仓库<br />(3)上传jar包到私服上(应用)<br /> 1、在maven目录config/settings.xml:认证:配置用户名密码<br /> <server><br /> <id>releases</id><br /> <username>admin</username><br /> <password>admin123</password><br /> </server><br /> <server><br /> <id>snapshots</id><br /> <username>admin</username><br /> <password>admin123</password><br /> </server><br /> 2、在将要上传的项目的pom.xml中配置jar包上传路径<br /> <distributionManagement><br /> <repository><br /> <id>releases</id><br /> <url>[http://localhost:8081/nexus/content/repositories/](http://localhost:8081/nexus/content/repositories/)<br />releases/<br /></url><br /> </repository><br /> <snapshotRepository><br /> <id>snapshots</id><br /><url>[http://localhost:8081/nexus/content/](http://localhost:8081/nexus/content/)<br />repositorie/snapshots/<br /></url><br /> </snapshotRepository><br /> </distributionManagement><br /> 3、执行命令,发布项目到私服<br /> 点击Maven build... ,输入deploy<br />(4)下载jar包到本地仓库(应用)<br /> 1、在Maven目录conf/settings.xml中配置模版<br /> <profile><br /> <id>dev</id><br /> <repositories><br /> <repository><br /> <id>nexus</id><br /> <url>htpp://localhost:8081/nexus/content/groups/public/</url><br /> <releases><br /> <enabled>true</enabled><br /> </releases><br /> <snapshots><br /> <enabled>true</enabled><br /> </snapshots><br /> </repository><br /> </repositories><br /> <pluginRepositories><br /> <pluginRepository><br /> <id>public</id><br /> <name>Pblic Repositories</name><br /> <url>http://localhost:8081/nexus/content/groups/public/</url><br /> </pluginRepository><br /> </pluginRepositories><br /> </profile> <br /> 2、在Maven目录conf/settings.xml中激活模版<br /> <activeProfiles><br /> <activeProfile>dev</activeProfile><br /> </activeProfiles><br /> 3、测试<br />