今天的内容:
maven高级应用
1 maven基础回顾;
2 maven传统的web工程做一个数据查询操作;
3 maver工程拆分与聚合的思想4,把第二阶段做好的web工程修改成 maven拆分与聚合的形式;
5,私服【远程仓库】;
6,如何安装第三方jar包。【把第三方jar包安装到木地仓库,把第三方ja包安装到私服。】;
0、Maven 基础
参考文档《Maven 基础课程第一天》,第一天视频以及之前的笔记《黑马就业班(02.JavaWeb+项目实战\15.Maven基础)包含IDEA的一些使用技巧总结》:。
1、Maven回顾
如下
maven是一个项目管理工具。
1、依赖管理:maven对项目中jar包的管理过程。传统工程我们直接把jar包放置在项目中。
1)maven工程真正的jar包放置在仓库中,项目中只用放置jar包的坐标。
2)仓库的种类:本地仓库,远程仓库【私服】,中央仓库。
仓库之间的关系:当我们启动一个 maven工程的时候, maven工程会通过pom文件中jar包的坐标去本地仓库找对应jar包,默认情况下,如果本地仓库没有对应jar包, maven工程会自动去中央仓库下载jar包到本地仓库。在公司中,如果本地没有对应jar包,会先从私服下载jar包,如果私服没有jar包,可以从中央仓库下载,也可以从本地上传。
2、一键构建:maven自身集成了 tomcat插件,可以对项目进行编译,测试,打包,安装,发布等操作。(不是必须,我们可以使用自己本地的Tomcat)
1)maven常用命令:c1ean(清楚前面编译的文件), compile , test , package(将项目打包放到target目录), install(将项目安装到本地仓库), deploy(将项目部署到私服)。
2)maven三套生命周期:清理生命周期(cleanlifecycle),默认生命周期(defaultlifecycle),站点生命周期(sitelifecycle)
2、Maven配置文件pom.xml中jar包相关问题
这部分见视频4,5,以及项目:Maven_day02_01 的pom.xml文件的解析。
3、SSM项目相关问题
注意点
1、同样是使用SSM三大框架来构建项目,注意,使用Spring去整合SpringMVC和Mybatis;
2、dao层使用Mybatis,配置文件是applicationContext.xml,另外我们这里使用独立接口的配置文件来开发(ItemsDao.xml),不使用注解开发;
此处注意,在resources目录下面无法创建Package,只能创建Directory,因此我们不能写“com.lkj.dao”,而应该写“com/lkj/dao”!(这部分见视频6)
3、service层使用spring,配置文件是applicationContext。spring我们使用xml+注解的方式进行开发:自己写的类使用注解,框架提供的类使用配置文件。(这部分见视频7)
4、web层使用springmvc,配置文件是web.xml(主)与springmvc.xml。 (这部分见视频8)
5、我们使用maven自带的tomcat7插件:tomcat7:run,注意在pom.xml配置tomcat7插件
5、maven父子工程的创建
参考视频10
1、父工程可以选择 project 或者 module(我们使用project)。
父工程只需要一个pom.xml文件,别的可以啥也不要,因此我们可以不使用maven骨架,也不需要选择 webapps与quickstart。当然,我们也可以把 .idea 与 src 删除。
父工程其实就是用于管理jar包坐标。
2、创建dao、service、controller的子模块,选中父工程就可以创建module。
dao与页面没有交互,使用普通的java工程就可以,可以不使用maven骨架,也不需要选择 webapps与quickstart。
service与页面没有交互,使用普通的java工程就可以,可以不使用maven骨架,也不需要选择 webapps与quickstart。
web层与页面进行交互,我们使用maven骨架,选中webapps。
6、工程和模块的关系以及继承和依赖的概念
见视频11,以及项目:maven_day02_parent下面几个pom.xml的注释。
7、传递依赖下来的包是否能使用
参考文档:2.3.5 依赖范围对传递依赖的影响,视频12。
1、将 maven_day02_01 项目jar包坐标贴到父工程的pom.xml;
2、讨论 junit 包在子模块下面能否使用,junit的作用域是test。参考下面2图,以后分析依赖关系,参考如下2图。
8 、在父子工程中填充代码
参考视频13
1、对于applicationContext.xml配置文件,dao层与service层都需要,我们在使用的时候,dao层的 applicationContext.xml 就配置dao层的约束,service层就配置service层的约束!取个名字加以区分 applicationContext.xml即可!
2、由于service层引入dao层的模块,那么dao层中有的代码,service层里面也有!可以直接使用!同样,dao层里面的配置文件,也导入到service层的相关目录下面!
同样,web层导入service的module,web层此时就有service层与dao层的代码!注意,log4j的配置文件放到web层目录下。
web.xml与页面内容也是放到web下面。此时我们发现web.xml报错,
<param-value>classpath:applicationContext.xmlparam-value>
因为此时没有 applicationContext.xml 文件,这个文件被拆分为 applicationContext-dao.xml 与 applicationContext-service.xml 2个,分别放在dao的模块与service的模块下。
那么我们在web层的resources下面创建一个 applicationContext.xml,导入 applicationContext-dao.xml 与 applicationContext-service.xml 即可!
<import resource="classpath:spring/applicationContext-dao.xml">import>
<import resource="classpath:spring/applicationContext-service.xml">import>
因为web层包含dao层与service层的所有代码,包括所有配置文件,其实web的resources目录下面有 applicationContext-dao.xml 与 applicationContext-service.xml ,所以可以在 applicationContext.xml 直接引用这两个文件即可!这样web.xml也可以识别到!。
9、父子工程的3种启动方式
参考视频14
第二种:我们直接启动 web模块的tomcat7:run,发现出现错误:Could not find artifact com.lkj:maven_day02_service。
这是因为我们启动maven工程的时候,会从本地仓库找jar包。我们启动 web模块,它会去本地仓库找service模块,但是service模块没有放置在本地仓库中,需要先将service模块打包放在本地仓库!那么我们直接 install 父工程,这样dao、service、web模块的内容都会打包放到本地仓库,接下来我们再 启动 web模块的tomcat7:run,可以使用!
之前parent父工程启动,它里面的jar包本地仓库全部都有,因此可以直接运行!
第三种:使用本地安装的tomcat,与之前安装方式相同。
10、私服
私服(远程仓库)的安装与启动(参考视频15)
项目pom.xml中的 snapshot 是测试版的意思,而releases 是发行版的意思。
私服的使用:参考视频16
需求:我们想把 maven_day02_parent 项目的dao模块上传到远程仓库。
首先配置登录私服的信息。在本地maven目录下:D:\maven\apache-maven-3.5.2\conf,找到settings.xml文件,在 标签下配置。
接下来,配置项目 pom.xml。我们想要上传那个模块到私服,就将下面代码贴到哪个模块的pom.xml。
接下来就可以完成上传:在dao模块下面,运行 deploy。
下面,配置项目自动从远程仓库下载jar包,同样在maven的settings.xml文件下面配置。
11、安装第三方jar包到本地仓库与私服
参考视频17、18