• 34-Maven


    34-Maven笔记-qianfeng-笔记



    在这里插入图片描述

    一、Maven简介

    ①:在项目中如何导入jar包

    • 下载jar包(mvn)
    • 将下载的jar包拷贝到相中(WEB-INF/lib)
    • 选择jar文件–右键–Add as Library

    ②:传统导入jar包的方式存在什么问题?

    • 步骤多(相对)一一繁琐
    • 在不同的项目中如果需要相同的jar包,需要分别存储这个jar文件一一冗余、项目体积大
    • 在不同的环境下可能因为ja文件版本不一致导致项目无法运行(重新配置)一一移植性差

    ③:项目的生命周期

    • 项目从编译到运行的整个过程
    • 完整的生命周期:清理缓存一校验一编译一测试订包一安装一部署

    DEA提供了一键构建项目的功能,但是如果我们需要自定义的生命周期管理,却没有现成的工具(清理缓存)

    ④:Maven简介

    Maven是个基于项目对象模型(P0M)用于进行项目的依赖管理、生命周期管理的工具软件

    项目的依赖(Gar包)管理
    项目生命周期管理
    聚合工程

    二、Maven安装及配置

    ①:Maven下载

    官网地址:https://maven.apache.org/
    点击下载
    在这里插入图片描述
    下载对应系统的版本
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ②:Maven安装

    Maven是基于Java语言进行开发的,因此依赖JDK(建议JDK1.7+)
    开箱即用:直接解压即可

    • 解压(d/mvn)
    • 目录结构:
      • bin存放指令文件(Maven提供了一个mvm指令)
      • boot包含了一个类加载框架的jar文件
      • conf包含了Maven的核心配置文件settings.xml
      • Iib存放了maven运行所需的jar文件

    ③:配置环境变量

    1. MAVEN_HOME D:mvn\apache-maven-3.6.3
    在这里插入图片描述
    2. Path 增加 %MAVEN_HOME%\bin
    在这里插入图片描述
    测试
    在这里插入图片描述

    三、Maven的项目结构

    使用Maven进行项目还有一个好处:无论使用什么样的开发工具(eclipse/idea)项目的结构是统一的。

    ①:Maven的项目结构

    - src
    	- main                   :程序功能代码
    		- Java               :java代码
    		- resource           :资源代码、配置代码
    	- test                   :测试代码
    		- Java               :单元测试java代码
    		- resource           :资源代码、配置代码
    	- pom.xml                :项目对象模型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    ②:pom.xml

    POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

    执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

    POM 中可以指定以下配置:

    项目依赖
    插件
    执行目标
    项目构建 profile
    项目版本
    项目开发者列表
    相关邮件列表信息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。

    
    <project xmlns = "http://maven.apache.org/POM/4.0.0"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
        http://maven.apache.org/xsd/maven-4.0.0.xsd">
     
        
        <modelVersion>4.0.0modelVersion>
        
        <groupId>com.companyname.project-groupgroupId>
     
        
        <artifactId>projectartifactId>
     
        
        <version>1.0version>
    
    	
    	<dependencies>
    		
    	dependencies>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    如果需要在当前项目中添加依赖,只需在pom.xml文件中进行依赖配置即可

    配置依赖 找到依赖的坐标,添加dependencies标签即可

    
    <dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
    <version>5.1.47version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    四、依赖管理

    ①:Maven进行依赖管理的流程

    在这里插入图片描述

    ②:仓库介绍

    • 本地仓库 就是本地计算机上的某个文件夹(可以是自定义的任何文件夹)
    • 远程仓库 就是远程主机上的jar文件仓库
      • 中央仓库 maven官方提供的仓库,包含了所需的一切依赖(免配置)
      • 公共仓库 除了中央仓库以外的第三方仓库都是公共仓库,例如aliyun(需要配置)
      • 私服 企业搭建的供内部使用的maven仓库
        在这里插入图片描述

    ③:Maven仓库配置

    01.配置本地仓库

      <localRepository>D:\OOP\java\maven\mvn_resplocalRepository>
    
    • 1

    在这里插入图片描述

    02.配置公共仓库

    在这里插入图片描述

    	 <mirror>
    		<id>alimavenid>
    		<name>aliyun mavenname>
    		<url>http://maven.aliyun.com/nexus/content/groups/public/url>
    		<mirrorOf>centralmirrorOf>
    	mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    五、项目的生命周期管理

    ①:生命周期介绍

    项目构建的声明周期:项目开发结束之后部署到运行环境运行的过程

    • 清除缓存
    • 检查
    • 编译
    • 测试 (就会执行maven项目中test目录下的单元测试)
    • 打包(war、jar)
    • 安装(Gar会被安装到本地仓库)
    • 部署(将项目生成的包放到服务器中)

    ②:生命周期管理指令

    在项目的根目录下执行mvn指令(此目录下必须包含pom.xml)

    • 清除缓存

      mvn clean
      
      • 1
    • 检查

      mvn  check
      
      • 1
    • 编译

       mvn  compile
      
      • 1
    • 测试 (就会执行maven项目中test目录下的单元测试)

       mvn test
      
      • 1
    • 打包(war、jar)

      mvn package
      
      • 1
    • 安装(Gar会被安装到本地仓库)

       mav install
      
      • 1
    • 部署(将项目生成的包放到服务器中)

        mvn deploye
      
      • 1

    六、基于IDEA中使用Maven

    ①:在IDEA中关联Maven

    说明:IDEA本身集成了Maven,考虑到lDEA和Maven版本的兼容性
    Idea不建议配置比默认版本更新的版本建议 使用idea自带的maven
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ②:使用IDEA创建Maven项目

    01.创建Java项目

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    02.创建Web项目

    1.先创建一个Java项目
    在这里插入图片描述
    在这里插入图片描述
    3.配置web组件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.部署web项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ③:在IDEA中使用Maven对项目进行管理

    https://mvnrepository.com/
    在这里插入图片描述

    ④:依赖范围

    在通过dependencyi添加依赖时,可以通过scope标签配置当前依赖的适用范围

    • test只在项目测试阶段引入当前依赖(编译、测试)
    <dependency> 
    	<groupId>junitgroupId> 
    	<artifactId>junitartifactId>
    	<version>4.13.2version>
    	<scope>testscope> 
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • runtime 只在运行时使用(运行、测试运行)
    • provided 在(编译、测试、运行)
    • compile 在(编译、测试、运行、打包)都引入

    ⑤:在IDEA中使用Maven进行项目构建

    01.Maven项目构建生命周期说明

    • clean 清理缓存清理项目生成的缓存
    • validate 校验验证项目需要是正确的(项目信息、依赖)
    • compile 编译编译项目专供的源代码
    • test 测试运行项目中的单元测试
    • package 打包将项目编译后的代码打包成发布格式 。
    • verify 检查对集成测试的结果进行检查、确保项目的质量是达标的
    • install 安装将包安装到maven的本地仓库,以便在本地的其他项目中可以引用此项目(聚合工程)
    • deplo 部署将包安装到私服的仓库,以供其他开发人员共享

    02.IDEA进行生命周期说明

    在这里插入图片描述

    七、私服

    企业搭建供内部使用的一个Maven仓库 。

    • 开发者需要依赖直接从私服下载
    • 私服可以实现企业内部依赖的共享:当企业开发了一个通用插件r),可以发布到私服,可以连接到 当前私服的其他开发者就可以共享这个插件了

    ①:私服搭建

    我们可以通过专门的Maven仓库管理软件来搭建私服。例如:Apache ArchivaNexus

    01.下载nexus

    在这里插入图片描述
    在这里插入图片描述

    02. 安装并运行nexus

    • ①. 使用管理员运行cmd
    • ②.进入nexus-2.14.11-01\bin目录中执行以下命令

    在这里插入图片描述

    先进入到日志目录nexus-2.14.4-03\logs\wrapper.log下,查看错误信息,主要是没找到本地的jdk

    在这里插入图片描述> 进入nexus-2.14.4-03\bin\jsw\conf\wrapper.conf,找到此处修改成自己的jdk路径

    在这里插入图片描述> 修改完毕,在bin目录下重新输入nexus start,启动成功

    在这里插入图片描述

    停止命令 nexus stop

    03.登录Nexus

    私服登录地址 默认端口号 8081

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    04.私服仓库组配置

    在这里插入图片描述

    在这里插入图片描述

    添加阿里中央仓库

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    ②:配置私服

    1: 在mavensettings..xml文件的servers标签中 配置认证信息

     
    <server>
    	 <id>nexus-publicid> 
    	 <username>adminusername> 
    	 <password>admin123password> 
    server>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    2: 在mavensettings.xml文件的profiles标签中

    • repositorypluginRepositoryid子标签的值,要和上面配置的serverid子标签的值一致
    <profile> 
    	<id>nexusid> 
    	<repositories> 
    		<repository> 
    			<id>nexus-publicid> 
    			<name>Nexus Release Snapshot Repositoryname> 
    			<url>http://localhost:8081/nexus/content/groups/public/url> 
    			<releases><enabled>trueenabled>releases> 
    			<snapshots><enabled>trueenabled>snapshots> 
    		repository> 
    	repositories> 
    	<pluginRepositories> 
    		<pluginRepository> 
    			<id>nexus-publicid> 
    			<url>http://localhost:8081/nexus/content/groups/public/url> 
    			<releases><enabled>trueenabled>releases>
    			<snapshots><enabled>trueenabled>snapshots>
    		pluginRepository> 
    	pluginRepositories>
    profile>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    3: 在mavensettings.xml文件的activeProfiles配置激活profile

      <activeProfiles>
        <activeProfile>nexusactiveProfile>
      activeProfiles>
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述

    八、Maven聚合工程

  • 相关阅读:
    (四) 一文搞懂 JMM - 内存模型
    Prometheus系列(二)Grafana可视化部署
    【Spring Boot | 第一篇】Spring Boot 原理
    Web自动化测试(3)-Unittestreport
    基于Java毕业设计药品管理系统源码+系统+mysql+lw文档+部署软件
    C++ 数据结构探索:构建高效程序的基础
    UI自动化的适用场景,怎么做?
    LeetCode每日一练 —— 21. 合并两个有序链表
    Java中Exception和Error有什么区别?
    .Net Core `RabbitMQ`封装
  • 原文地址:https://blog.csdn.net/cygqtt/article/details/126139355