Maven项目构建工具
-
POM(项目对象模型):把项目当做一个对象
-
核心内容是依赖管理,主要过程是项目构建,通过各种插件来产出文件
局部setting配置文件就是在maven文件夹下(与repositroy同级),创建一个setting配置文件,到时会先读取到这一个文件.
断言,junit包下的类
//预期是4,如果num不是4就报错
Assert.assertEquals(4,num);
<!--对象模板版本:就是用哪个版本来构建项目对象-->
<modelVersion>4.0.0</modelVersion>
依赖管理
依赖传递
- 注意被引用的项目的scope,设置时不要是test模式,不然不能引用
引用其它maven项目
<!--千万注意这个作用域-->
<scope>test</scope>
<dependency>
<groupId>org.example</groupId>
<artifactId>Maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--千万注意这个作用域,在下面的依赖范围章有说-->
<!--<scope>test</scope>-->
</dependency>
传递优先级
- 路径优先
- 声明优先:层级相同时,看父级谁优先
- 特殊优先:后面的覆盖前面的
排除依赖:不要你的依赖
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
可选依赖:不给别人用
<version>4.13.2</version>
<optional>true</optional>
依赖范围
<scope>test</scope>
作用范围
- 主程序:main包下
- 测试程序:test包下
- 参与打包:package范围内
-
默认compile全作用范围
-
test只对测试程序有效
-
provider:不参与打包,如servlet-api依赖,如果参与打包,会和tomcat自带的servlet-api依赖冲突
runtime只参与打包:如jdbc的Dervier类,在主程序中从来没有用过,用的都是jdbc的驱动
依赖范围传递性
只有compile和runtime的直接依赖才能传递.以间接依赖的作用范围为结果
生命周期
Maven的生命周期分为三大部分clean,default(核心部分),site(报告期)
//会在target/surefire-reports下生成一个Test.xml的测试报告
mvn test
- install会将项目打包安装到本地仓库去,路径在maven控制台里有个install开头的标明
插件用法
这个就是site期:项目构建过程中使用插件产出文件的过程
阿帕奇·马文·贾瓦多克插件 – 用法 (apache.org)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<!--打包成只有测试程序的-->
<goals>
<goal>test-jar</goal>
</goals>
<!--在什么阶段执行这个插件-->