1. 第一天:Maven基础<br /> <br />MavenApache公司的开源项目,是项目的构建工具,用来依赖管理。<br />1maven的好处<br /> 同样的代码,实现的功能,Maven项目的空间非常小,推断:Maven项目没<br />有jar包。<br />2maven的好处如何实现<br /> 两大核心:<br /> 依赖管理:对jar包管理过程<br /> 项目构建:项目在编码完成后,对项目编译、测试、打包、部署等一系<br />列操作都通过命令来实现<br /> 通过maven命令将web项目发布到tomcat:<br /> mvn tomcat:run<br />3maven的安装、配置本地仓库<br /> 1)下载maven-3.3.9版本(略)<br /> 2)解压到本地磁盘(解压目录不要带有中文、空格)<br />(3)配置系统环境变量 ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014346609-54e8e256-260d-40a4-ab4b-c48de15a4aef.png#height=115&width=415)<br /> 将M2_HOME环境变量配置到path环境变量中:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014346781-7fd89b22-6b6d-44b2-8fd9-6ca4eedf2db2.png#height=23&width=193)<br /> 通过mvn-v命令查询本地Maven配置: ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014347048-8a672005-1649-44e3-96e9-7fda428401ac.png#height=77&width=313)<br /> (4)配置本地仓库<br />![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014347353-d94abf43-f555-4f11-b287-3670ed00cef9.png#height=125&width=415)<br /> 在conf/settings.xml设置:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014347660-f1c9a235-a220-46e6-878f-31e45647edd1.png#height=23&width=273)<br />4、maven项目标准目录结构<br />![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014348137-ea80057c-5ea3-4913-b6a5-aa1fae85562e.png#height=341&width=415)<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 /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014348679-94499af1-6b80-4efd-b1be-24035a3e44a2.png#height=121&width=365)<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014348899-18ebbc6d-7789-45c8-b3c0-61fdce65297d.png#height=153&width=365)<br /> <br />8、maven整合web项目案例<br /> (1)整合servlet<br /> 第一步:创建maven项目<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014349347-4c2d78c7-b6eb-4a87-897c-1b5ac1eefb60.png#height=144&width=330)<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014349895-45de4b93-df05-438d-9904-286f438d99fb.png#height=179&width=399)<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 /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014350351-87fa069f-f9fc-49c2-89c1-783faa3ffe70.png#height=77&width=152) <br /> 第四步:创建servlet,缺少jar包(略)<br /> 第五步:查找依赖<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014350550-a7b7c6b3-9417-4a5c-9aae-0f754659f9e1.png#height=138&width=331)<br /> 依赖范围:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014350918-5d1b7ae5-4c87-4788-9fba-f608efe6089a.png#height=203&width=332)<br /> 总结:如果使用tomcat自带的jar包,就要将依赖作用范围设置为<br />provided<br />第六步:运行调试maven项目<br /> (1)运行状态下:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014351427-d269a9d6-3c06-4de1-b96c-2b48081f84a9.png#height=170&width=330)<br />(2)调试状态下:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014352009-8a127d52-7bac-4266-9220-22b0313c854f.png#height=122&width=329)<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014352435-7391fa2b-014d-4ef2-bab6-ff3ad13ca56e.png#height=149&width=327)<br />(2)整合struts2<br /> 第一步:创建Maven工程(上同,略)<br /> 第二步:修改jdk的版本(略)<br /> 第三步:添加web.xml<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014352906-ea46c300-c539-4001-be35-effd46506c1d.png#height=46&width=303)<br /> 第四步:添加struts2的依赖<br /> 配置阿里云镜像<br /> 添加struts2核心包的依赖<br /> UpdateProject<br /> 第五步:配置核心过滤器(略)<br /> 第六步:编写和配置Action(略)<br /> <br />9、概念模型<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014353489-9e55d640-e703-4b3a-8341-c2ec027a5d7b.png#height=171&width=315)<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 /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014353988-a2d5a677-7e3d-4a32-8778-b1a5d19f538b.png#height=137&width=242)<br /> A、第一声明者优先原则<br /> 谁先定义就用谁的依赖包<br /> B、路径近者优先原则<br /> 级别:直接依赖 > 传递依赖<br /> (2)排除依赖<br /> 简单操作:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014354473-b88c8b40-6e36-4558-86cc-7bd41168a0dd.png#height=128&width=315)<br /> 形成代码:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014355028-300bb794-7642-4788-8c74-2d80ca398763.png#height=89&width=283)<br /> (3)版本锁定(推荐使用)<br /> 代码实现:Maven_SSH<br />2、SSH框架的配置文件加载过程<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014356815-18e598f5-6a43-45e8-9280-d63bf5e496f0.png#height=233&width=416) <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 /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014357852-79777c86-f74a-4d6a-a0a9-b874d091c1da.png#height=116&width=251)<br /> 创建好的父工程结构:只有pom.xml,可以推断父工程不进行编码<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014360431-823ecd17-6256-4562-ad82-0e674a342ccf.png#height=41&width=95)<br />1、项目需要的依赖信息,在父工程中定义,子模块继承<br />2、 将各个子模块聚合到一起<br /> (2)将创建好的父工程发布到本地仓库<br /> 将来service,dao工程发布到本地仓库,找不到父工程会报错。<br /> (3)创建子模块SSH-Dao<br /> 选中父工程,然后创建Maven Module。<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014360991-63477dd6-3be2-4a4a-b4b8-671f3e73ee85.png#height=107&width=314)<br /> 打包方式选择为jar:<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014361502-dac19c0d-abf5-4f20-8a89-5bdcb50d75fe.png#height=111&width=235)<br /> 1、SSH-Dao模块负责数据访问层:包含dao相关的代码和配置<br />文件<br /> 2、将spring的配置文件进行拆分<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014362110-8b44dccb-11ba-4290-a403-eca636114769.png#height=42&width=156):项目基础信息<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014362490-000f4cde-94a9-42df-a08f-d7bc25e7a7ff.png#height=42&width=150):dao层的bean对象<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014363108-8b4662af-61f9-4f3c-9886-28512dbc7abe.png#height=254&width=203)<br /> 3、测试customerDao类的方法是否可用<br /> 整合spring的单元测试<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014363636-de3a8e96-96c1-4e39-9ee1-455d36f9477c.png#height=161&width=284)<br /> (3)创建子模块SSH-Service<br /> 创建过程如上,不重复(略),打包方式为:jar<br />1、SSH-Service模块负责业务层:包含service相关代码和配<br />置文件<br /> 2、在pom.xml中添加SSH-Dao的依赖<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014364126-064bf0ab-dd64-425f-a0bd-17b176cac411.png#height=192&width=209)<br /> (3)创建子模块SSH-Web<br /> 创建过程如上,不重复(略),打包方式为:war<br />1、将Maven-SSH项目的web.xml和index.jsp复制过来<br />2、修改web.xml<br />![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014364607-67860987-148e-4a29-9758-a550cd8d13d1.png#height=52&width=415)<br /> (4)单元测试<br /> 1、批量加载spring配置文件<br /> A、classpath:applicationContext-*.xml <br />加载本项目的多个配置文件<br /> B、classpath*:applicationContext-*.xml<br /> 既加载本项目的配置文件,还可以加载jar包的配<br />置文件<br /> 2、传递依赖的范围(了解) ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014365036-9dec9f1d-180d-4e43-bd75-ffd2d26003f7.png#height=199&width=381)<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 /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014365513-cee2ca42-e1e8-4b77-ae6d-6ccfb891e6c1.png#height=67&width=61)<br /> 2、解压到本地磁盘G:/Maven-Server<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014365670-3576e625-c05d-492d-b961-dd14e812ad60.png#height=84&width=226)<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 /> ![](https://cdn.nlark.com/yuque/0/2020/png/471109/1608014366017-b85bd042-22b0-4a3d-b032-05a672d830c1.png#height=149&width=173)<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 />