maven 笔记
maven简介
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM (Project Object Model):项目对象模型
maven作用
项目构建:提供标准的、跨平台的自动化项目构建方式
依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
统一开发结构:提供标准的、统一的项目结构
依赖配置详情
<!--指定pom版本模型-->
<modelVersion>4.0.0</modelVersion>
<!-- 打包方式,web工程为war包,java为jar包-->
<packaging>war</packaging>
<name>web01</name>
<!--组织ID-->
<groupId>com.LF</groupId>
<!-- 项目ID-->
<artifactId>web01</artifactId>
<!--版本号,release为正式版,snapshot为测试版-->
<version>1.0-SNAPSHOT</version>
<!--依赖-->
<dependencies>
<!-- 具体的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
<!-- 对其的应用透明不知道引用了该依赖-->
<optional>true</optional>
</dependency>
</dependencies>
<!-- 构建-->
<build>
<!-- 添加插件-->
<plugins>
<!-- 具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
依赖的传递性
依赖具有传递性:
1.直接依赖:在当前项目中通过依赖配置建立的依赖关系
2.间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
依赖传递的冲突问题(优先级)
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
依赖管理
可选依赖
可选依赖指对外隐藏当前所依赖的资源――不透明
<dependency>
<groupId>junit</groupid>
<artifactrd>junit</ artifactId><version>4.12</version>
<!-- 表明对下一级透明-->
<optional>true</optional>
</ dependency>
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本—―不需要
<dependency>
<groupId>junit</groupId>
<artifactId>junit</ artifactrd>
<version>4.12</version>
<!-- 表明对下一级排除-->
<exclusions>
<exclusion>
<groupId>org. hamcrest</groupid>
<artifactId>hamcrest-core</artifactId>
</exelusion>
</exclusions>
</dependency>
生命周期
default构建生命周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6rmKw4iY-1657447976772)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220710115837117.png)]
生命周期相关插件
插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
默认maven在各个生命周期上绑定有预设的功能
通过插件可以自定义其他功能
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
<phase>generate-test-resources</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
generate-test-resources ```