• Maven详解


    1 maven介绍

    1)为什么使用maven

    Maven是一个强大的项目管理和构建工具,它能够简化Java项目的构建、依赖管理和发布过程。以下是Maven的一些主要特点和功能:

    1. 项目结构管理:Maven采用约定优于配置的原则,提供了标准的项目结构模板,使得开发人员可以快速创建和维护项目。
    2. 依赖管理:Maven通过中央仓库和本地仓库的方式管理项目的依赖库,开发人员只需要在项目配置文件中声明所需的依赖,Maven会自动下载并管理依赖关系。
    3. 构建工具:Maven提供了丰富的构建生命周期和插件系统,可以执行编译、测试、打包、部署等一系列构建任务,并支持自定义插件进行扩展。
    4. 多模块管理:Maven支持多模块项目管理,可以将复杂的项目拆分为多个子模块,简化项目的管理和构建过程。
    5. 自动生成文档:Maven可以根据项目的代码注释生成项目文档,例如使用Javadoc插件生成API文档。
    6. 版本控制:Maven提供了版本管理功能,可以轻松地管理项目的版本信息,并支持快速切换不同版本的依赖库。
    7. 构建报告:Maven能够生成详细的构建报告,包括编译错误、测试结果等信息,帮助开发人员及时发现和解决问题。
    8. 发布管理:Maven支持项目的部署和发布,可以将构建好的项目发布到本地仓库、远程仓库或者私服中,方便其他开发人员使用。

    标准化项目结构:

    在这里插入图片描述

    标准化构建流程:

    在这里插入图片描述

    依赖管理:

    使用maven前:

    在这里插入图片描述

    使用maven后:

    在这里插入图片描述

    2)maven是什么

    Apache Maven是一个开源的项目管理和构建工具,它是由Apache软件基金会开发和维护的。Maven使用基于项目对象模型(Project Object Model,简称POM)的概念来管理项目,并提供了一套规范和工具来支持项目的构建、依赖管理和发布.

    Maven的项目对象模型(Project Object Model,简称POM)是一种XML文件,用于描述和定义Maven项目的结构、依赖关系、构建配置等信息。每个Maven项目都有一个对应的POM文件,位于项目根目录下,文件名为pom.xml

    POM文件包含了以下主要元素:

    1. 项目坐标(Project Coordinates):包括项目的groupId、artifactId和version,用来唯一标识一个项目。
    2. 依赖管理(Dependency Management):用来声明项目所依赖的外部库或模块,包括依赖的groupId、artifactId和version等信息。
    3. 构建配置(Build Configuration):包括项目的构建生命周期、插件配置、资源目录、输出目录等与构建相关的配置信息。
    4. 源代码目录(Source Directories):指定项目源代码和测试代码的目录路径。
    5. 插件配置(Plugin Configuration):用来配置Maven插件的行为和参数。
    6. 打包类型(Packaging Type):指定项目的打包类型,例如jar、war、pom等。
    7. 仓库配置(Repository Configuration):用来配置Maven的远程仓库和本地仓库。

    通过POM文件,Maven可以理解项目的结构和依赖关系,以及如何进行构建和发布。开发人员可以在POM文件中声明和管理项目的各种属性和配置,使得项目的构建和管理更加简单和可控。

    POM文件还支持继承机制,可以通过父子模块关系实现项目间的代码复用和依赖管理。子模块的POM文件可以继承父模块的配置,同时可以覆盖或添加自己特定的配置。

    在这里插入图片描述

    •仓库分类:

    ​ 本地仓库:自己计算机上的一个目录

    ​ 中央仓库:由Maven团队维护的全球唯一的仓库

    ​ •地址:https://repo1.maven.org/maven2/

    ​ 远程仓库(私服):一般由公司团队搭建的私有仓库

    ​ 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:如果有,则在项目直接引用; 如果没有,则去中央仓库中下载对应的jar包到本地仓库。还可以搭建远程仓库,将来jar包的查找顺序则变为:本地仓库 -> 远程仓库 ->中央仓库

    2 maven的基本配置

    maven的配置文件: conf/setting.xml

    1)本地仓库地址配置:

    
    <localRepository>D:\repositorylocalRepository>
    

    2)中央仓库地址配置:

    
    <mirrors>
    	
    	<mirror>  
    		<id>alimavenid>  
    		<name>aliyun mavenname>  
    		<url>http://maven.aliyun.com/nexus/content/groups/public/url>
    		<mirrorOf>centralmirrorOf>          
    	mirror>
    mirrors>
    

    3)jdk版本配置:

    <profiles>
    	
    	<profile>         
    		  <id>JDK-1.8id>           
    		  <activation>               
    				<activeByDefault>trueactiveByDefault>               
    				<jdk>1.8jdk>          
    		  activation>           
    		  <properties>               
    			<maven.compiler.source>1.8maven.compiler.source>               
    			<maven.compiler.target>1.8maven.compiler.target>               
    			<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
    		properties>       
    	profile>
      profiles>
    

    4)idea上maven的配置

    在idea的setting选项中:

    在这里插入图片描述

    使用本地上安装并且配置好的maven;

    使用本地配置好的maven配置文件;

    使用本地仓库;

    在setting中配置完maven后, 需要在New Projects Setup中也配置一下, 否则每次新建项目都需要重新配置maven

    在这里插入图片描述

    3 maven的基本使用

    1)常用的maven指令

    compile :编译 clean:清理 test:测试 package:打包 install:安装

    2)maven的声明周期

    Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件;

    Maven 对项目构建的生命周期划分为3套

    clean:清理工作:

    default:核心工作,例如编译,测试,打包,安装等

    site:产生报告,发布站点等

    在这里插入图片描述

    validate(校验)			校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
    initialize(初始化)			初始化构建状态,比如设置属性值。
    generate-sources(生成源代码)		生成包含在编译阶段中的任何源代码。
    process-sources(处理源代码)		处理源代码,比如说,过滤任意值。
    generate-resources(生成资源文件)		生成将会包含在项目包中的资源文件。
    process-resources (处理资源文件)		复制和处理资源到目标目录,为打包阶段最好准备。
    compile(编译)			编译项目的源代码。
    process-classes(处理类文件)		处理编译生成的文件,比如说对Java class文件做字节码改善优化。
    generate-test-sources(生成测试源代码)		生成包含在编译阶段中的任何测试源代码。
    process-test-sources(处理测试源代码)		处理测试源代码,比如说,过滤任意值。
    generate-test-resources(生成测试资源文件)	为测试创建资源文件。
    process-test-resources(处理测试资源文件)		复制和处理测试资源到目标目录。
    test-compile(编译测试源码)		编译测试源代码到测试目标目录.
    process-test-classes(处理测试类文件)		处理测试源码编译生成的文件。
    test(测试)			使用合适的单元测试框架运行测试(Juint是其中之一)。
    prepare-package(准备打包)		在实际打包之前,执行任何的必要的操作为打包做准备。
    package(打包)			将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
    pre-integration-test(集成测试前)		在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
    integration-test(集成测试)		处理和部署项目到可以运行集成测试环境中。
    post-integration-test(集成测试后)		在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
    verify (验证)			运行任意的检查来验证项目包有效且达到质量标准。
    install(安装)			安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
    deploy(部署)			将最终的项目包复制到远程仓库中与其他开发者和项目共享。
    

    4 IDEA上Maven项目的基本使用

    1)项目创建

    在这里插入图片描述

    Maven中每个项目都有一个坐标, 只有

    什么是坐标?

    ​ Maven 中的坐标是资源的唯一标识

    ​ 使用坐标来定义项目或引入项目中需要的依赖

    Maven 坐标主要组成

    ​ groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)

    ​ artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

    ​ version:定义当前项目版本号

    2)依赖导入

    pom.xml文件中里面是设置的所有依赖信息;

    单个的依赖信息是标签中来设置, 是通过,以及的坐标来确定依赖的位置;

    
    	<dependencies>
    		<dependency>
    			<groupId>javax.servletgroupId>
    			<artifactId>jstlartifactId>
    			<version>1.2version>
    		dependency>
    		<dependency>
    			<groupId>org.springframeworkgroupId>
    			<artifactId>spring-jdbcartifactId>
    			<version>5.3.3version>
    		dependency>
    		<dependency>
    			
  • 相关阅读:
    数据结构——图の选择题整理
    Vue 生命周期钩子解读
    三层神经网络的输出公式,神经网络层数怎么算
    Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”
    LeetCode HOT 100 —— 32.最长有效括号
    【云原生之kubernetes实战】在k8s环境下部署OrangeHRM人力资源管理系统
    为何添加事务管理器呢?spring事务又有哪些传播特性?
    《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第10章 维度设计
    服务器时间同步架构与实现chrony
    基于SpringSecurity的@PreAuthorize实现自定义权限校验方法
  • 原文地址:https://blog.csdn.net/2201_75506216/article/details/139609937