maven

作者: sgy_j | 来源:发表于2020-07-16 13:07 被阅读0次

    maven是什么?

    Maven是一个跨平台的项目管理工具,主要服务于基于Java平台的项目构建依赖管理项目信息管理

    • 依赖管理,根据坐标从仓库中寻找构件。
    • 构建(build)工具,maven抽象了构建生命周期并为绝大部分构建任务提供了已实现的插件。
    • 项目信息管理
    一、仓库

    maven根据坐标寻找构件流程
    当maven根据坐标寻找构件时,首先会去本地仓库查看是否存在该构件,若本地仓库已经存在该构件,则直接使用;若本地仓库不存在该构件,则需要去远程仓库查找此构件,在远程仓库中查找到该构件后,需要将其下载到本地仓库后再使用。如果本地仓库和远程仓库都没有该构件,则maven会报错。

    坐标:groupId, artifactId, version三个元素定义了一个项目的基本坐标

    <groupId>com.example</groupId>
    <artifactId>hello-spring-boot-starter-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    

    构件:jar包等

    1. 本地仓库

    安装maven后,在不执行任何maven命令前,不存在本地仓库目录。当用户执行第一条maven命令后,会在用户目录下.m2/repository/创建本地仓库。

    若希望自定义本地仓库目录,可以在pom.xml中进行如下配置。

    <settings>
      <localRepository>D://install//localres</localRepository>
    </settings>
    
    2. 远程仓库

    中央仓库是maven默认的远程仓库,maven的安装文件中自带了中央仓库的配置,其id为centeral。

    私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,它代理广域网上的远程仓库,为局域网内的maven用户提供服务。当maven下载构件时,先去私服上查找该构件,若私服上没有该构件,则从远程仓库下载构件缓存至私服,再为maven用户的下载请求提供服务。

    若希望配置远程仓库,可以在pom.xml中进行如下配置。

    <repositories>
        <repository>
            <id>central</id>
            <name>libs-releases</name>
            <url></url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>snapshots</id>
            <name>libs-snapshots</name>
            <url></url>
            <snapshots />
        </repository>
    </repositories>
    

    大部分远程仓库无需认证即可访问,但有时出于安全考虑,我们需要认证信息才能访问一些远程仓库。可以在pom.xml中进行如下配置来配置仓库认证信息

    <servers>
        <server>
            <id></id>
            <username></username>
            <password></password>
        </server>
    </servers>
    
    3. 镜像

    如果仓库X能够提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。

    在pom.xml中进行如下配置,可以使用阿里云镜像代替中央仓库。

    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror> 
    </mirrors>
    
    二、生命周期和插件
    阶段 处理 描述
    验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的
    编译 compile 执行编译 源代码编译在此阶段完成
    测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。
    包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包
    检查 verify 检查 对集成测试的结果进行检查,以保证质量达标
    安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用
    部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程
    • package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
    • install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
    • deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

    Maven 有以下三个标准的生命周期:

    • clean:项目清理的处理
    • default(或 build):项目部署的处理
    • site:项目站点文档创建的处理

    相关文章

      网友评论

          本文标题:maven

          本文链接:https://www.haomeiwen.com/subject/psjphktx.html