## 安装配置 1.保证java环境正常 2.官网下载 3.解压 修改配置信息 首先确认某个位置声明一个文件夹作为本地仓库repmvn \~\~\~ java conf-\>settings.xml 1》修改本地仓库地址 后添加设置 D:\\soft\\repmvn 2》设置镜像(所需要的jar包也许在Maven官方地址(国外)比较慢 通常会配置镜像)从上往下一次找 加在前 nexus-aliyun Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public central huaweicloud \* https://repo.huaweicloud.com/repository/maven/ central Maven Repository Switchboard http://repo.maven.org/maven2/ central central Maven Repository Switchboard http://repo2.maven.org/maven2/ central ------------------------------------------------------------------------------- (idea默认配置文件...\\JetBrains\\IntelliJ IDEA 2022.1.1\\plugins\\maven\\lib\\maven3\\conf\\settings.xml) \~\~\~ 4.配置环境变量 \~\~\~java 变量名:MAVEN_HOME 变量值:C:\\soft\\java\\apache-maven-3.6.3 Path中添加%MAVEN_HOME%\\bin \~\~\~ 5.验证 \~\~\~java 打开cmd 输入mvn -v 查看版本号信息 \~\~\~ 6.idea配置 \~\~\~java Settings-\>Build,Execution,Deployment-\>Build Tools-\>Maven Maven home path:选择maven路径 User settings file:选择maven中conf文件夹内settings.xml(仓库的配置文件) 打钩 全局配置 使用File项中 close project选项关闭项目 进入欢迎界面 选择左侧Customize(改制) 选择 All Settings-\> \~\~\~ 7.生成Maven项目 \~\~\~java 通过cmd命令方式生成Maven项目 确定一个文件夹 在导航处输入cmd 命令:mvn archetype:generate groupId:com.woniuxy artifactId:PetShops version:版本号 直接回车 package:确认包名 不改 File-\>new-\>Project-\>录入项目名、选择Maven、打开Settings-\>groupId:com.woniux artifactId:项目名 \~\~\~ ## 文件结构 ### 约定目录结构 Maven为了让构建过程能够尽可能自动化完成 所以必须约定目录结构的作用 1.pom.xml \~\~\~java 最重要文件 重点就是学习如何去编写该文件中的配置信息 \~\~\~ 2.src \~\~\~java main--》项目主体文件 java文件夹 包 ==》就是通过groupid生成的包 类 resources ==》非类文件的其他配置文件 .xml properties 静态资源 模板页面等 test--》单元测试文件Junit @Test java (也可以有resources存放配置文件 主要是为了测试而单独设置的配置) \~\~\~ 3.target 编译后文件存放位置 ### 约定大于配置 约定大于配置 配置大于编码 ## pom.xml \~\~\~java 4.0.0 war (先从本地仓库查找--\>配置的远程镜像下载--\>找不到报错not found) com.woniuxy Test7 1.0-SNAPSHOT 17 17 8.3.0 com.mysql mysql-connector-j ${com.mysql.version} \~\~\~ 如若另一个项目(模块)引用了当前项目(模块),则当前项目(模块)已经引用的依赖也会传递给新项目(模块)。 ## 依赖范围 \~\~\~java 4.0.0 com.woniuxy Test5 1.0-SNAPSHOT 17 17 com.mysql mysql-connector-j 8.3.0 compile \~\~\~ 除了三个基本的属性用于定位坐标外,依赖还可以添加以下属性: - \*\*type\*\*:依赖的类型,对于项目坐标定义的packaging。大部分情况下,该元素不必声明,其默认值为jar - \*\*scope\*\*:依赖的范围(作用域,着重讲解) --可以让某个依赖在某个环节存在或者不存在 比如打包时不需要测试依赖 - \*\*optional\*\*:标记依赖是否可选 - \*\*exclusions\*\*:用来排除传递性依赖(一个项目有可能依赖于其他项目,就像我们的项目,如果别人要用我们的项目作为依赖,那么就需要一起下载我们项目的依赖,如Lombok) 我们着重来讲解一下\`scope\`属性,它决定了依赖的作用域范围: - \*\*compile\*\* :默认的依赖有效范围,如果在定义依赖关系的时候,没有明确指定依赖有效范围的话,则默认采用该依赖有效范围,此范围表示在编译、运行、测试时均有效。 - \*\*provided\*\* :仅在编译、测试时有效,但是在运行时无效,也就是说,项目在运行时,不需要此依赖,比如我们上面的Lombok,我们只需要在编译阶段使用它,编译完成后,实际上已经转换为对应的代码了,因此Lombok不需要在项目运行时也存在。 - \*\*runtime\*\* :在运行、测试时有效,但是在编译代码时无效。比如JDBC驱动就是典型的只需要运行时使用,因为JDBC驱动由数据库厂商开发,我们使用的始终是JDK中提供的接口,不需要直接使用特定驱动中的类或是方法,因此只需在运行时包含即可。 - \*\*test\*\* :只在测试时有效,例如:JUnit框架,我们一般只会在测试阶段使用JUnit,而实际项目运行时,我们就用不到测试了,所以这个选项非常适合测试相关的框架。 ## maven命令 自动化构建工具 清理-》编译-》测试-》报告-》打包-》部署 clean-\>清除target 字节码文件 compile-\>编译(会先执行validate检查是否通过) test-\>测试 执行设置的单元测试(单元测试类名以Test开头) package-\>打包 (会参考配置中打包格式 会调用单元测试) install-\>安装 (按照生命周期全部执行完毕 将最终文件 存入本地仓库) deploy-\>部署(不考虑)