栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven基础

Maven基础 1.Maven简介

Maven是什么

  • Maven的本质是一个项目观察工具,简项目开发和管理过程抽象成一个项目对象模型(POM)

  • POM(Project Object Model):项目对象模型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RhwMlnG1-1636700046383)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101511567.png)]

Maven作用

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:分辨快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的项目结构

2.Maven安装配置

Maven下载

  • 官网:https://maven.apache.org/

  • 下载地址:https://maven.apache.org/download.cgi#

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vp5FmmFu-1636700046386)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101533880.png)]

  • Maven解压即安装(避免存在于中文路径)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vkp06Qts-1636700046388)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101533166.png)]

Maven设置 setting.xml文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vqURXl9p-1636700046390)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101553506.png)]

配置本地仓库

Maven启动后会自动保存下载的资源到本地仓库

  • 我们需要自定义本地仓库的位置,方便jar管理
  • 在任意位置建一个名为**Repository**的文件夹
  • 在****标签内添加自己的本地位置路径
  
  D:DevEnvironmentRepository

远程仓库配置

Maven默认连接的是国外的服务器,下载资源的时候就会非常慢甚至会失败,所以我们需要配置国内的资源镜像

  • 添加标签下,添加国内镜像源,使用阿里云镜像即可

    
    
        
        alimaven
        
        central
        
        aliyun maven
        
        
            http://maven.aliyun.com/nexus/content/groups/public/
        
    

Maven环境变量配置

  • 依赖Java,需要配置 JAVA_HOME ( 需要安装JDK)

  • 设置MAVEN自身的运行环境,需要配置 MAVEN_HOME

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqt71E4e-1636700046392)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101542758.png)]

  • 添加Path变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ygckhVod-1636700046394)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101543842.png)]

  • 安装成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crATFrEU-1636700046395)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111101545049.png)]


3.Maven基础概念

仓库

  • 仓库:用于存储资源,包含各种jar包
  • 仓库分类:
    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:分本机电脑上的仓库,为本地仓库提供资源
      • 中央仓库:Maven团队维护,存储所有的资源的仓库
      • 私服:部门/公司分范围内储资源的仓库,从中央仓库获取资源
  • 私服的作用:
    • 保护具有版权的资源,包含购买或自主研发的jar
      • 中央仓库中的jar都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,仅对内部开放,不能对外共享

坐标

  • 什么是坐标?

    • Maven中的坐标用于描述仓库中资源的位置
    • https://repo1.maven.org/maven2/
  • Maven坐标的主要组成

    • groupld:定义当前Maven项目隶属组织名词给(通常是域名反写,例如:org.mybatis)
    • artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
    • version:定义当前项目版本号
    • packageing:定义该项目的打包方式
    • https://mvnrepository.com/
  • Maven坐标的作用

    使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工具交由机器完成

    Maven坐标 例如:

    
        org.junit.jupiter
        junit-jupiter-api
        5.8.1
        test
    
    

全局setting与用户setting区别

  • 全局setting定义了当前计算机中Maven的公共配置
  • 用户setting定义了当前用户的配置
    • 可以在本地仓库上一级路径下在添加一个setting.xml文件

4.Maven项目(手动)

Maven项目目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xq04ZhGe-1636700046396)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111159179.png)]

pom.xml Maven配置文件




    
    4.0.0
    
    
    
        8
        8
    

    
    org.example
    
    Maven_Project
    
    1.0-SNAPSHOT

	
    
        
            
            junit
            
            junit
            
            4.13.2
            
            test
        
    


Maven项目构建命令

Maven构建DOS命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔

命令作用
mvn compile编译
mvn clean清理
mvn test测试
mvn package打包
mvn install安装到本地

插件创建工程

  • 创建工程

    mvn archetype:generate
    	-DgroupId={project-packaging}
    	-DartifactId={project-name}
    	-DarchetypeArtifactId=maven-archetype-quickstart
    	-DinteractiveMode=false
    
  • 创建java工程

    mvn archetype:generate 
        -DgroupId=com.demo 
        -DartifactId=java-project 
        -DarchetypeArtifactId=maven-archetype-quickstart 
        -Dversion=0.0.1-snapshot 
    	-DinteractiveMode=false
    
  • 创建web工程

    mvn archetype:generate 
        -DgroupId=com.demo 
        -DartifactId=web-project 
        -DarchetypeArtifactId=maven-archetype-webapp 
        -Dversion=0.0.1-snapshot 
    	-DinteractiveMode=false
    

5.Maven项目(IDEA)

注意:

  • 创建项目后,如缺少测试资源文件夹,可以手动创建,右键标记为测试资源
  • 加载资源缓慢要检查配置国内镜像源
  • 使用原型生成项目后多余的代码可以清理

配置Maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HRfcrknn-1636700046398)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111207946.png)]

手工创建Java项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VrzOeoTe-1636700046399)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111425244.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GOZBYLWV-1636700046400)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111440901.png)]

原型创建Java项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cr4PSqC2-1636700046402)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111429638.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqTKDGML-1636700046403)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111505722.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LwCRjUNT-1636700046405)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111507127.png)]

原型创建Web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ar2lyaUR-1636700046406)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111537187.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTdFfoQP-1636700046408)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111537494.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWSAAzyK-1636700046409)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111535393.png)]

插件

例如:安装TomCat插件

  1. 搭建基础Web项目环境

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVxPek5h-1636700046410)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111555899.png)]

  2. 在 pom.xml 文件中导入TomCat插件

    
        
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
            
        
    
    
  3. 导入成功后可以在Maven插件项中看到该插件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10W6ZqzX-1636700046412)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111604752.png)]

  4. 运行项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jPz8TfVD-1636700046413)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111603512.png)]

  5. 可以进一步设置插件

    
        
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                
                    80
                    /
                
            
        
    
    
  6. 还可以配置Maven运行配置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7myQQa12-1636700046414)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111608333.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FNdh3jgv-1636700046416)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111611340.png)]

pom.xml 配置文件解析




    
    4.0.0
    
    war

    
    org.example
    
    Project_Web
    
    
    
    1.0-SNAPSHOT

    
    
        
            
            junit
            
            junit
            
            4.13.2
            
            test
        
    

    
    
        
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                
                    80
                    /
                
            
        
    



6.项目依赖管理

依赖导入

  • 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

  • 格式:

    
        
            
            junit
            
            junit
            
            4.13.2
            
            test
        
        
    
    
  • 依赖查找

    Maven仓库: https://mvnrepository.com/

依赖传递

一个Maven项目可以把其他工程作为依赖导入

将项目的坐标作为依赖导入,就可以使用其依赖


    
        org.example
        Maven-02-Demo
        1.0-SNAPSHOT
    

图解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOacQPgj-1636700046417)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111639952.png)]

依赖传递性

  • 依赖具有传递性

    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
    • 依赖具有相对性

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sljNI2Ul-1636700046418)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111643930.png)]

依赖传递冲突问题

  • **路径优先:**当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • **声明优先:**但资源在相同层级被依赖时,配置顺序考前的覆盖依赖顺序靠后的
  • **特殊优先:**当同级配置了相同资源的不同版本,后配置的覆盖先配置的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vk5kIvnu-1636700046420)(https://gitee.com/code-once/ImgCloud/raw/master/img/202111111647308.png)]

可选依赖

可选依赖指对外隐藏当前所依赖的资源——不透明

可选依赖是不对外公开依赖


    junit
    junit
    4.13.2
    
    
    true

排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——不需要

排除依赖是主动断开


    org.example
    Maven-01-Demo
    1.0-SNAPSHOT
    
    
        
		    
            junit
            junit
        
    

依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用域范围

  • 作用域范围定义

    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包(package指令范围内)
  • 作用域范围

    scope主代码测试代码打包范例
    compile(默认)✔️✔️✔️log4j
    test✔️junit
    provided✔️✔️servlet-api
    runtime✔️jdbc
  • 带有依赖范围的资源在进行传递时,作用范围将受到影响

    compiletestprovidedruntime
    compilecompiletestprovidedruntime
    test
    provided
    runtimecompiletestprovidedruntime

7.生命周期与插件

项目构建生命周期

  • Maven对项目构建的生命周期划分为3套
    • dean:清理工作
    • default:核心工作,例如编译,测试,打包,部署等
    • site:产生报告,发布站点
clean生命周期
pre-clean执行一些需要在clean之前完成的工作
clean一处所有上一次构建生成的文件
post-clean执行一些需要在clean之后立即完成的工作
default构建生命周期
compile(编译)编译项目的源代码
test-compile(编译测试源码)编译测试源代码到测试目标目录
test(测试)使用合适的单元测试框架测试框架运行测试(Juint是其中之一)
package(打包)将编译后的代码打包成可发布格式的文件,比如JAR、WAR或EAR文件
install(安装)安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖
site构建生命周期
pre-site执行一些需要在生成站点文档之前完成的工作
site生成项目的站点文档
post-site执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy将生成的站点文档部署到特点的服务器

插件

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上绑定有预设的功能
  • 通过插件可以自定义其他功能

例如:


    
        
			
            org.apache.maven.plugins
            maven-source-plugin
            3.2.1
            
                
                    
	                    
                        jar
                    
                    
                    generate-test-resources
                
            
        
    



ins>


org.apache.maven.plugins
maven-source-plugin
3.2.1




jar


generate-test-resources




----------------



--------------

**codeonce**
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号