我们使用mvn compile之后,会生成一个target文件,里面还会有两个文件:
一个是存储生成的字节码,一个是存储maven的状态文件(不确定)。
之后我们使用mvn test 测试时,还会在target文件中生成另外两个文件:
一个是存储报告的文件,一个是存储测试的字节码文件。
再然后我们执行mvn package来进行打包,这个是后target文件还会生成两个文件:
其中jar包中就包含了程序的字节码。
需要注意,上面是有先后顺序的,必须编译后,测试,测试后才能打包!
在让后,我们使用mvn install 命令将我们打包好的东西放到仓库中。
我们之前groupid定义的路径就是我们放置仓库的路径,也和mvn的坐标gav对应起来。
==========================================================================================
像通过上面的命令来操作的直接通过cmd命令创建工程。
================================================================================
首先,我们先进入setting =》搜索maven,设置好maven路径和maven的setting.xml配置文件,再配置好本地仓库路径。
上面配置好了,我们就可以通过idea来创建。
第一步:点击右上角的符号来创建。
第二步:创建一个maven项目。
第三步:设定好名字和坐标!
第四步:设定结构,对应的结构要设定好!
这样一个标椎的maven工程就创建出来了。
我们之前mvn命令对应的在idea中也有:
直接双击就运行对应的命令。
maven的debug运行如何设置呢?
首先,点击edit Configurations…
然后添加一个maven:
之后我们就可以debug,打断点来调试测试了:
=========================================================================================
就是在创建的时候记得添加archetype中的quickstart。创建后可能缺少一些结构什么resource目录,可以自行添加并且声明文件类型。。
同样,web项目就要添加webapp骨架。
也是缺少一些结构需要自己添加并且声明文件类型。
========================================================================================
通过maven来安装tomcat插件,步骤如下:
第一步:创建一个webapp工程,设定好结构等等。
第二步:配置pom.xml文件如下:(重点看build中的插件内容)
<?xml version="1.0" encoding="UTF-8"?>4.0.0
war
WebAppTest01
com.test
WebAppTest01
1.0-SNAPSHOT
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
第三步:配置好后因为要加载插件等操作需要时间不要着急,加载完成后,打开右侧Maven项目,刷新一下,我们可以看到一个tomcat插件已经存进来了,直接双击run就可以运行tomcat了。
run运行后,当前项目就可以在上面运行了,并且会告诉你访问地址。
除了使用tomcat插件我们还可以配置tomcat插件:
<?xml version="1.0" encoding="UTF-8"?>4.0.0
war
WebAppTest01
com.test
WebAppTest01
1.0-SNAPSHOT
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
9090
如果嫌弃一直点击run麻烦,我们也可以在页面再添加一个maven执行命令。
当然一般这种情况是用来debug的。
下面介绍一下pom.xml常用的配置的说明:
<?xml version="1.0" encoding="UTF-8"?>4.0.0
war
WebAppTest01
com.test
WebAppTest01
1.0-SNAPSHOT
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
9090
junit
junit
4.12
==========================================================================
依赖指当前项目运行所需的jar,一个项目可以设置多个依赖,它就是通过pom.xml下的dependencies来设置。
15.2.1 直接依赖 和 间接依赖
简而言之,就是项目1依赖于项目2,那么项目1也会依赖项目2所依赖的内容,自然这些依赖了的内容也是可以让项目1使用的,这就是依赖传递。
当然因为上面这种情况,也就分为了:直接依赖和间接依赖。
冲突问题就是可能依赖的插件或包中,有版本不同的,不同层级的。
下面的路径优先和声明优先必须知道!
===================================================================================
可选依赖指对外隐藏当前所依赖的资源 (不透明)。
在dependency标签下有一个optional标签,该标签声明为true就可以对外隐藏所依赖的资源,默认为false。
这里我们是项目1是依赖了项目2 , 上面的情况是在项目2中配置,从而让项目1看不到。
接下来我们可以在项目1中配置,不想看到项目2的依赖。
这就用到排除依赖:
注意:排除依赖和可选依赖不一样,虽然效果相同,但排除依赖是主动断开这个依赖资源!换句话说,就是当前依赖我们不使用,就可以排除了。
使用exclusions标签来配置:
============================================================================
scope标签,是用来定义Maven的依赖范围的。
scope范围如下:
-
compile(也是默认):在main中执行,在test中执行,打包也要打包进去。例如:log4j,无论什么时候都需要日志记录啊。
-
test:就是仅仅在test模块结构中使用,例如:junit。
-
provided:在main中执行,在test中执行,但是有些情况是绝对不能参与打包的,例如:servlet-api,如果打包添加了一个2版本,但是服务器是3版本,这样我们将包放到服务器,就版本不同奔溃了呀。
-
runtime:仅仅是打包能参与。
我们也可以通过右侧Maven项目看依赖的范围是多少。
依赖范围的传递性:
在我们依赖传递的过程中,设定的scope范围可能彼此不相同。
=================================================================================
Maven构建生命周期描述的是一次构建过程经历了多少个事件。
Maven对项目构建的生命周期划分为3套。
-
clean:清理工作。
-
default:核心工作,例如:编译,测试,打包,部署等。
-
site:产生报告,发布站点。
clean构架的生命周期又分为下面3个阶段:
-
pre-clean:执行一些需要在clean之前完成的工作。
-
clean:移除所有上一次构建生成的文件。
-
post-clean:执行一些需要在clean之后立刻完成的工作。
default构建的生命周期有很多阶段,见图下:
而我们执行哪一个命令,其实就是从上向下的一个执行步骤。
例如:我们执行compile命令,只需要从第一个到complie就可以了。我们执行install命令,那我们就需要从第一个执行到install命令,期间也执行了compile和test等命令,这就是生命周期的一个效果。
site构建生命周期的四个阶段:
-
pre-site:执行一些需要在生成站点文档之前完成的工作。
-
site:生成项目的站点文档。
-
post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。
-
site-deploy:将生成的站点文档部署到特定的服务器上。
插件和生命周期内的阶段是绑定的!在执行到对应生命周期时执行对应的插件过程。
也就是插件时可以伴随上面生命周期的阶段来运行的,可以让我们自定义其他功能,这个时候需要定义好execution标签如下:
复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
ringBoot+SpringCloud+Dubbo)**
[外链图片转存中…(img-9SxuE7M2-1714417020303)]
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
[外链图片转存中…(img-b72SHCbw-1714417020303)]
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
[外链图片转存中…(img-cJRrSMSK-1714417020304)]
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
[外链图片转存中…(img-W4YE82hb-1714417020304)]
[外链图片转存中…(img-aQj4gRIV-1714417020304)]
[外链图片转存中…(img-0pXMarpi-1714417020305)]
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
[外链图片转存中…(img-485YDOkz-1714417020305)]
[外链图片转存中…(img-QDtHcGm1-1714417020305)]
[外链图片转存中…(img-hnrRxSzA-1714417020306)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-kivKt0NX-1714417020306)]
[外链图片转存中…(img-Fd7Fc3cY-1714417020306)]