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