目录
Maven核心概念 POM
Pom(项目对象模型)
把Java工程当做一个 jar包,可以直接引入到其他工程
模型思想
约定大于配置,配置大于编码 可以使我们的引用程序维护性更高更加灵活
配置对 servlet-api.jar 包的依赖
不知道详细信息的依赖可以到下面这个网站,搜索关键字
https://mvnrepository.com/https://mvnrepository.com/
Maven 的构建命令
原生构建命令感兴趣的可以看下,不重要
1、清理target目录
- mvn clean
2、编译源文件把 java文件编译成class文件 生成target目录
- mvn compile
3、编译测试源文件 为class文件
- mvn test-compile
4、编译测试源文件 为class文件
- mvn test-compile
5、对该项目进行测试并且生成测试报告
- mvn test
6、对项目进行打包
- mvn package
7、项目打包,并且安装到本地仓库
- mvn install
核心配置文件 pom.xml 解读
<modelVersion>4.0.0</modelVersion> <!-- 模型版本-->
<!--当前工程坐标-->
<groupId>lovo</groupId> <!--公司或组织id-->
<artifactId>maven01</artifactId> <!--项目id/模块id-->
<version>1.0</version> <!--版本号-->
- 坐标作用:Maven仓库中用来区分不同jar包之间的向量
<packaging>jar</packaging> <!--指定打包类型-->
- 指定打包类型:pom、jar、war,默认是jar类型
<!--当前项目的名称-->
<name>maven01</name>
<url>http://maven.apache.org</url>
<!--项目的配置信息-->
<properties>
<!--项目构建的编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--优先级问题,也可以不写,不写会默认用settings里的配置-->
<!-- 编译时的jdk版本-->
<maven.compiler.source>17</maven.compiler.source>
<!-- 打包时的jdk版本-->
<maven.compiler.target>17</maven.compiler.target>
</properties>
<!--jar包的依赖-->
<dependencies>
<!--单个jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!--作用域 哪些地方能用-->
<scope>test</scope>
</dependency>
</dependencies>
- 可以有多个dependcy;<scope>可以不写
<build>构建 运⾏代码:--------加⼊插件、main⽅法
<finalName>项目最终打包成的名字</finalName>
<plugins>
<groupId>插件公司名</groupId>
<artifactId>插件名</artifactId>
<configuration>
<archive>
<manifest>
<mainClass> 指定启动类</mainClass>
</manifest>
</archive>
<!--依赖包 打包-->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugins>
</build>
Maven的继承、聚合
继承本质
- A工程的 pom.xml 中的配置继承了 B 工程中 pom.xml 的配置
聚合本质
- 把多个模块或项目聚合到⼀起,创建⼀个专门的工程进行管理、构建
示例一
给A工程配置mysql jar包的依赖,B工程继承A的配置(就不用再写mysql的依赖了)
step1、新建好A工程后,按下面步骤新建B工程 继承A工程
新建好的pom.xml
step2、在A工程中添加依赖 右侧刷新下 B工程就可以用继承过来的了
继承后,打包父工程会把子工程一起打包出去
示例二
在B工程中调用A工程的工具
同样的,如果是A工程想调用B工程的,就把B的坐标 写到 A的依赖中