maven的知识点
1.maven中pow的坐标
使用如下三个向量在Maven的仓库中唯一的确定一个唯一的jar。
(1)groupId:公司或组织的域名倒序+当前项目名称
(2)artifactId:当前项目的模块名称
(3)version:当前模块的版本
2.jar包依赖的范围
1)compile(默认就是这个范围)
(1)main目录下的Java代码可以访问这个范围的依赖
(2)test目录下的Java代码可以访问这个范围的依赖
(3)部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
2)test
(1)main目录下的Java代码不能访问这个范围的依赖
(2)test目录下的Java代码可以访问这个范围的依赖
(3)部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
例如:对junit的依赖。仅仅是测试程序部分需要。
3)provided
(1)main目录下的Java代码可以访问这个范围的依赖
(2)test目录下的Java代码可以访问这个范围的依赖
(3)部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
例如:servlet-api在服务器上运行时,Servlet容器会提供相关API,所以部署的时候不需要。
4)其他:runtime、import、system等。
3.仓库
仓库中的文件包括:
(1)Maven的插件
(2)我们自己开发的项目的模块
(3)第三方框架或工具的jar包
4.生命周期
Maven有三套相互独立的生命周期,分别是:
- Clean Lifecycle在进行真正的构建之前进行一些清理工作。
- Default Lifecycle构建的核心部分,编译,测试,打包,安装,部署等等。
- Site Lifecycle生成项目报告,站点,发布站点。
再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

default主要流程为:compile、test、package、install等
运行任何一个阶段的时候,它前面的所有阶段都会被运行,例如我们运行mvn install 的时候,代码会被编译,测试,打包。
5.继承
如果有三个模块(三个模块是平级的),其Junit的版本号不一样

我们想让他们保持一致,就得挨个去修改。这就很麻烦,如果有一个父工程,定义了Junit的版本号,我们在子工程就直接引用父工程的就好。
使用继承机制就可以将这样的依赖信息统一提取到父工程模块中进行统一管理。
1)父工程的packaging定义为pow,即父工程不进行任何的业务代码,只在pow文件对依赖信息进行统一的管理。
<packaging>pom</packaging>
2)在子工程中引用父工程:
<parent>
<!-- 父工程坐标 -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径-->
<relativePath>..</relativePath>
</parent>
pg:
<!--继承-->
<parent>
<groupId>com.atguigu.maven</groupId>
<artifactId>Parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径-->
<relativePath>../Parent/pom.xml</relativePath>
</parent>
此时如果子工程的groupId和version如果和父工程重复则可以删除

浙公网安备 33010602011771号