Maven笔记总结

普通web工程在开发中存在的问题
①一个项目就是一个工程
如果项目非常庞大.就不适合继续使用package来划分模块,最好是一个模块对应一个工程,利于分工协作.
②项目中需要的jar包必须手动复制.粘贴到WEB_INF/lib目录下
③一个jar包依赖的其他jar包需要自己手动加入到项目中.

Maven是一款服务于JAVA平台的自动化构建工具;

eclipse目录结构:
src:源代码目录;
运行时环境:
这里写图片描述

构建过程的各个环节
1,清理:将以前编译得到的旧的class字节码删除,为下一次编译做准备 eclipse中的clean
2,编译:将java源程序编译成class字节码文件
3,测试:自动测试,自动调用Junit程序
4,报告:测试程序运行的结果
5,打包:动态Web工程打war包,java工程打jar包
6,安装:Maven的特定概念—将打包得到的文件复制到"仓库"中指定的位置
7,部署:将Web工程生成的War包复制到Servlet容器的指定目录下,使其可以运行

Maven的核心概念
1,约定的目录结构
2,POM
3,坐标
4,依赖
5,仓库
6,生命周期/插件/目标
7,继承
8,聚合

第一个Maven工程
1,创建约定的目录结构
1,根目录:工程名
2,src目录:源码
3,pom.xml文件:Maven工程的核心配置文件
4,main目录:存放主程序
5,test目录:存放测试程序
6,java目录:存放java源文件
7,resource目录;存放框架或其他工具配置文件
这里写图片描述
8.target:存放Maven执行compile后生成的class文件,打包的jar包等.(Maven构建的产品存放的地方)

2,为什么要遵守约定的目录结构?
*Maven要负责项目的自动化构建,以编译为例,Maven要想自动编译,那么它必须知道java源文件保存在哪里.
3,常用Maven命令
①注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录(文件夹).
与构建的过程相关:编译…测试…打包…
②常用命令
[1]mvn clean :清理 (清理掉target文件夹)
[2]mvn compile:编译主程序
[3]mvn test-compile:编译测试程序
[4]mvn test:执行测试
[5]mvn package:打包
4.修改默认本地仓库的位置,可以让Maven核心程序到我们事先准备好的目录下查找插件
[1]找到Maven解压目录\conf\settings.xml
[2]在setting.xml文件中找到localRepository标签
[3]将/path/to/local/repo从注释中取出
[4]将标签体内容修改为已经准备好的Maven仓库目录

5.POM
①含义:Project Object Model 项目对象模型
DOM:Document Object Model 文档对象模型
②pom.xml对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中配置
重要程度相当于web.xml对于动态Web工程
6.坐标
Maven的坐标
使用下面三个向量在仓库中唯一定位一个Maven工程
[1]groupid:公司或者组织域名倒序+项目名
com.xxx.maven
[2]artifactid:模块名
Hello
[3]版本
1.0.0 g a v

7.仓库
①仓库的分类
[1]本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务
[2]远程仓库:
(1)私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务
(2)中央仓库:架设在Internate上,为全世界所有Maven工程服务
(3)中央仓库镜像:为了分担中央仓库的流量,提升用户访问的速度.
②仓库中保存的内容:Maven工程
[1]Maven自身所需要的插件
[2]第三方框架或工具的jar包
[3]我们自己开发的Maven工程

8.依赖
①Maven解析依赖信息时会到本地仓库中查找被依赖的jar包.
对于我们自己开发的Maven工程,使用mvn install命令安装后就可以进入仓库.
这里写图片描述
9.生命周期
①各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行.
②Maven的核心程序中定义了抽象的声明周期,声明周期中各个阶段的具体任务是由插件来完成.
③Maven的核心程序为了更好的实现自动化构建,按照这样的特点执行生命周期的各个阶段:不论现在要执行生命周期的哪一个阶段,都是从这个生命周期最初的位置开始执行.
这里写图片描述
scope默认值是compile

10.Maven jar包的冲突,可能出现的错误,jsp中的空指针异常,因为在Maven的依赖中将tomcat中已有的jar包的依赖范围写成compile,这样的结果是在项目部署时,将该依赖的jar包也部署到了lib下,造成了与tomcat的lib下的jar包冲突,所以将可能出现冲突的jar包依赖的依赖范围写成provide.
11.依赖[高级]
①依赖的传递性
这里写图片描述
[2]排除依赖的方式
在该依赖dependency中依赖范围下,加
这里写图片描述
③依赖的原则性
多个依赖传递,就近原则,最终的依赖的项目,相同的jar包,得到的是最近依赖的项目中的所依赖的jar包;
这里写图片描述
④统一依赖版本号
每个依赖手动改弊端:繁琐,可能出现遗漏
建议配置方式
1.使用properties标签内使用自定义标签统一声明版本号
这里写图片描述
2.在需要统一版本的位置,使用${自定义标签名}引用声明的版本号
12.继承
为什么要使用继承:由于非compile范围内的依赖信息是不能再“依赖链”中传递的,很容易造成版本不一致,所以有需要的工程只能单独配置。
继承只是继承父工程的版本配置,而非继承整个依赖,依赖信息在子工程还是要写的;
步骤:
[1]创建一个Maven工程作为父工程.注意打包的方式是pom
这里写图片描述
[2]在子工程中声明对父工程的引用
这里写图片描述
[3]在子工程中将与父工程重复的依赖删除
这里写图片描述
在子工程中重复的依赖报出的信息!
[4]在父工程中统一管理Junit的依赖
这里写图片描述
[5]在子工程中删除Junit依赖的版本号部分
这里写图片描述
[6]配置继承后,执行安装命令时要先安装父工程;

17:聚合
①作用:一键安装各个模块工程.
②配置方式:在一个"总的聚合工程"中配置各个参与聚合的模块
这里写图片描述
③使用方式: 在聚合工程的pom.xml上点右键->run as ->maven install

18:Maven查找依赖信息的网站
http://mvnrepository.com/搜索需要的jar包的依赖信息.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值