# pom 文件扫盲
<!-- 取值 jar:生成 jar 包 --> | |
<!-- 取值 war,生成 war 包 --> | |
<!-- 取值 pom,说明这个工程是用来管理其他工程的工程 --> | |
<packaging>jar</packaging> | |
<!-- scope 标签: 配置当前依赖的范围 --> | |
<scope>test</scope> |
# maven 指令扫盲
- 清理操作 mvn clean 效果:删除 target 目录
- 验证 validate 验证项目是否正确且所有必须信息是可用的
- 编译操作 主程序编译:mvn compile 测试程序编译: mvn test-compile
- 测试操作 mvn test 测试的报告存放目录 target/surefire-reports
- 包装 package 打包 创建 JAR/WAR 包如在 pom.xml 中定义提及的包
- 检查 verify 检查 对集成测试的结果进行检查,以保证质量达标
- 安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用
- 部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程
# 测试依赖范围
<!-- scope 标签: 配置当前依赖的范围 --> | |
<scope>test</scope> |
标签的可选值:compile/test/provided/system/runtime/import
# 对比
main 目录 (空间) | test 目录 (空间) | 开发过程 (时间) | 部署到服务器 (时间) | |
---|---|---|---|---|
compile | 有效 Y | 有效 Y | 有效 Y | Y |
test | N | Y | Y | 无效 N |
test | Y | Y | Y | N |
# 结论
compile:通常使用的第三方框架的 jar 包这样在项目实际运行时真正要用到的 jar 包都是以 compile 范围进行依赖的。比如 SSM 框架所需 jar 包。
Test:测试过程中使用的 jar 包,以 test 范围依赖进来。比如 junit。
provided:在开发过程中需要用到的 "服务器上的 jar 包" 通常以 provided 范围依赖进来。比如 servlet-api、jsp-api。而这个范围的 jar 包之所以不参与部署、不放进 war 包,就是避免和服务器上已有的同类 jar 包产生冲突,同时减轻服务器的负担。说白了就是:“服务器上已经有了,你就别带啦!”
# 继承依赖
只有打包方式为 pom 的 Maven 工程才能管理其他的 Maven 工程,打包方式为 pom 的 Maven 工程中不写业务代码,他是专门管理 Maven 工程的工程
主要作用是在父工程中统一管理依赖信息
<dependencyManagement> | |
<dependencies> | |
<!--MyBatis 分页插件 starter--> | |
<dependency> | |
<groupId>com.github.pagehelper</groupId> | |
<artifactId>pagehelper-spring-boot-starter</artifactId> | |
<version>${pagehelper-starter.version}</version> | |
</dependency> | |
</dependencyManagement> |
# build 标签扫盲
生成微服务可运行的 jar 包,应用微服务打包插件,可以以 spring boot 微服务形式直接运行 jar 包
- 当前微服务本身的代码
- 当前微服务所依赖的 jar 包
- 内置 Tomcat
- 与 jar 包可以通过 java -jar 方式直接启动微服务
仅靠 Maven 自身的构建能力是不够的,所以要通过 build 标签引入下面的插件
<build> | |
<plugins> | |
<plugin> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-maven-plugin</artifactId> | |
<configuration> | |
<excludes> | |
<exclude> | |
<groupId>org.projectlombok</groupId> | |
<artifactId>lombok</artifactId> | |
</exclude> | |
</excludes> | |
</configuration> | |
</plugin> | |
</plugins> | |
</build> |