Maven
Maven构建生命周期的核心阶段
clean
:清理项目编译、打包生成的输出文件(如target
目录 )validate
:校验项目必要信息、依赖是否完整compile
:编译项目主代码(一般是src/main/java
里的 Java 文件 )test
:执行单元测试(src/test/java
里的测试代码 )package
:将编译后的代码打包(如打成 JAR、WAR 包 )verify
:校验打包后的产物,确保符合质量标准install
:把打包好的产物安装到本地 Maven 仓库,供本地其他项目依赖site
:生成项目站点文档(展示项目报告、说明等 )deploy
:将最终产物部署到远程仓库(如公司私服 ),供团队其他成员使用
依赖管理
依赖传递冲突问题:
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
依赖范围
依赖的jar包默认情况下可以在任何地方使用,可以通过scope标签设定其作用范围
作用范围:
- 主程序范围有效(main文件范围内)
- 测试程序范围有效(test文件范围内)
- 是否参与打包(package指令范围内)
Jar和War包
JAR(Java Archive)和 WAR(Web Application Archive)是 Java 平台下两种常见的打包格式,主要区别如下:
用途与内容
- JAR 包:用于封装 Java 类、资源文件(如配置文件、图片等)和元数据,通常用于打包独立的 Java 应用程序、类库或工具类,可通过
java -jar
命令直接运行(需在清单文件中指定主类)。 - WAR 包:专为 Web 应用设计,包含 Web 应用的所有资源,如 Servlet、JSP、HTML、CSS、JavaScript、Java 类、配置文件(web.xml 等)以及依赖的 JAR 包,需部署到 Web 服务器(如 Tomcat、Jetty)中运行。