Java26:MAVEN

Java26:MAVEN 一.介绍maven是一款为java项目构建管理依赖管理的工具使用maven可以自动话构建 ,测试 打包和发布项目大大提高了开发效率和质量二.安装和配置下载地址https://maven.apache.org/download.cgi历史版本下载Other Releases - Maven 3 archives配置变量MAVEN-HOME :安装地址path:%MAVEN-HOME%\bin测试地址mvn -vsettings.xml 配置配置本地仓库localRepositoryD:\java\maven\repository/localRepository配置中央仓库的阿里镜像mirroridalimaven/idnamealiyun maven/nameurlhttp://maven.aliyun.com/nexus/content/groups/public//urlmirrorOfcentral/mirrorOf/mirror配置jdk版本:profileidjdk-17/idactivationactiveByDefaulttrue/activeByDefaultjdk17/jdk/activationpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetmaven.compiler.compilerVersion17/maven.compiler.compilerVersion/properties/profile配置idea工具的mavenFile-settings-Build,Execution,Deployment-Build Tools-Manven 路径下Maven home path 选择maven安装目录三.maven定位属性maven工程相对之前的工程多出一组gavp属性maven 中的gavp中GroupIDartfactID, VersionID ,Packaging 四个属性1 GroupID格式com.{公司/BU}.业务线.{子业务线},最多4级例如 com.taobao.tddl 或者 com.alibaba.sourcing.multilang2ArtfactID 格式 产品线名-模块名。语义不重复不遗漏例如tc-client/uic-api3Version 版本号推荐主版本号.次级版本号.修订号 1.0.0主版本号当作了不兼容的api修改或者增加了能改变产品方向的新功能次版本号当作了向下兼容的功能性新增新增类/接口等修订号修复bug 没有修改方法签名的功能加强保持api兼容性。例如 初始1.0.0修改bug1.0.1功能调整1.1.1packaging 定义规则指示将项目打包为什么类型的文件idea 根据packaging值识别maven项目类型packaging 属性为jar默认值代表普通的java工程打包以后就是.jar结尾的文件packaging 属性为war 代表java的web工程打包以后.war结尾的文件packaging 属性为pom 代表不会打包用来做继承的父工程四.maven 工程快速搭建1安装插件JBLJAVATOWEB2创建一个javase maven 工程3maven工程 右键 jbljavatoweb五.maven依赖管理及构建命令1)第三方依赖声明denpendencies --第三方依赖的集合dependency 每个依赖项2)查找第三方依赖mvn 官网https://mvnrepository.commaven插件 maven-search安装插件后 进入 Tools- maven search 输入信息 即可扩展1.提取版本号统一管理2.可选属性scopescope 引入依赖的作用域默认 compile main test 打包运行test test junitTestruntime main 不会test 不会 打包和运行 Class.forName(com.mysql.cj.jdbc.Driver)provided main test 打包运行不会 Servlet HttpServlet总结如果不熟悉使用默认值即可全部生效3.依赖传递导入依赖会自动导入依赖的依赖compile denpendenices简化依赖的导入 确保依赖的版本无冲突依赖冲突发现已经存在的依赖 会终止依赖传递避免 循环依赖和重复依赖的问题依赖冲突的解决原则第一原则谁短谁优先引用的路径长度A -C -B1.0F -B 2.0 A C F B 2.0第二原则谁上谁优先 denpendencies 声明的先后顺序A-B1.0F-B2.0A-F-B 1.04.依赖下载失败解决方法1检查网络连接和Maven仓库服务器状态2确保依赖项的版本号与队友的版本号匹配并检查Pom文件依赖是否正确3 清楚本地Manven仓库缓存文件lastupdated 并删除刷新重新下载5.构建命令项目构建是指将源代码依赖库和资源文件等转换为可执行或可部署的应用程序的过程在这个过程包括编译源代码链接依赖库打包和部署等多个步骤语法 mvn 构建命令 构建命令mvn clean 清理编译或打包后的项目结构删除target文件夹mvn compile 编译项目生成target文件mvn test 执行测试源码测试mvn site 生成一个项目依赖信息的展示界面mvn package 打包项目 生成war/jar 文件mvn install 打包后上传到maven本地仓库本地部署mvn deploy 只打包上传到maven 私服仓库私服部署注意1.命令执行必须要我们进入到项目路径2.部署必须是jar包形式构建命令周期构建命令周期可以理解成是一组固定构建命令的有序集合触发周期后的命令会自动触发周期前的命令也是一种简单构建的思路清理周期主要对项目编译生成文件进行清理包含命令clean默认周期定义了真正构建时所需要执行的所有步骤它是生命周期中最核心的部分包含命令compile -test -package -install/deploy报告周期包含命令site打包mvn clean package 本地仓库mvn clean install最佳使用方案打包 mvn clean package重新编译mvn clean compile本地部署mvn clean install六.继承1.继承概念Maven继承是指在Maven 的项目中让一个项目从另外一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息简化项目的管理和维护工作2.继承的作用作用在父工程中统一管理项目中的依赖信息进行统一版本管理3.继承语法父工程groupIdorg.example/groupIdartifactIdmaven-shop-parent/artifactId!-- 当前工程为父工程它要去管理子工程所以打包方式必须是pom--packagingpom/packagingversion1.0-SNAPSHOT/version子工程!-- 使用parent标签指定当前工程的父工程--parentartifactIdmaven-shop-parent/artifactIdgroupIdorg.example/groupIdversion1.0-SNAPSHOT/version/parent4. 父工程依赖统一管理父工程声明版本!-- 使用denpendencyManagement标签配置对依赖的管理--!-- 被管理的依赖并没有真正被引入到工程--dependencyManagementdependenciesdependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.18.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.23/version/dependency/dependencies子工程声明版本!-- 子工程引入依赖不声明版本号继承父工程的版本号--dependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency/dependencies七.聚合1.聚合概念Maven 聚合是指多个项目组织到一个父级项目中通过触发父工程的构建统一按顺序触发子工程的构建的过程2.聚合作用a.统一管理子项目构建通过聚合可以将多个子项目组织在一起方便管理和维护b.优化构建顺序通过聚合可以对多个项目进行顺序控制避免出现构建依赖混乱导致构建失败的情况3.聚合语法父项目中包含子项目列表modulesmoduleshop-user/modulemoduleshop-order/module/modules