• Maven 简介


    Maven是一个基于Java的构建和依赖管理工具,它主要用来帮助实现项目的构建、测试、打包和部署。

    Maven 不仅是一个项目构建工具还是一个项目管理工具。它有约定的目录结构

    image

     

    POM

    POM(Project Object Model) 是Maven的基础。它是一个XML文件,包含了Maven用来build项目所需要的项目配置的信息。

    对于那些在pom中没有提到的信息,Maven就会使用默认值。例如Maven默认源代码在src/main/java中。因此Maven在最大程度上简化了项目build的过程。

    Super POM
    Super POM是Maven的默认POM。所有的POM都继承了super POM。也就是说,所有的POM中的信息都来自于Super POM,但在子POM中的配置信息会覆盖Super POM中的重复项。

     

    Maven 插件和仓库

    Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,仅仅定义了抽象的生命周期,所有这些任务都交给插件来完成的。每个插件都能完成至少一个任务,每个任务即是一个功能,将这些功能应用在构建过程的不同生命周期中。这样既能保证拿来即用,又能保证 maven 本身的繁杂和冗余。

     

    maven 能支持不同的生命周期,但是最常用的是默认的Maven生命周期 (default Maven lifecycle )。如果你没有对它进行任何的插件配置或者定制的话,那么命令 mvn package 会依次执行默认生命周期中直到包括 package 阶段前的所有阶段的插件目标:

    主要的生命周期如下:

     

    • validate,验证工程是否正确,所有需要的资源是否可用。
    • compile,编译项目的源代码。
    • test-compile,编译项目测试代码。
    • test,使用已编译的测试代码,测试已编译的源代码。
    • package,已发布的格式,如jar,将已编译的源代码打包。
    • integration-test,在集成测试可以运行的环境中处理和发布包。
    • verify,运行任何检查,验证包是否有效且达到质量标准。
    • install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
    • deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
    • generate-sources,产生应用需要的任何额外的源代码,如xdoclet。

    Maven库

    当第一次运行 maven 命令的时候,你需要 Internet 连接,因为它要从网上下载一些文件。那么它从哪里下载呢?它是从 maven 默认的远程库(http://repo1.maven.org/maven2) 下载的。这个远程库有 maven 的核心插件和可供下载的 jar 文件。

    但是不是所有的 jar 文件都是可以从默认的远程库下载的,比如说我们自己开发的项目。这个时候,有两个选择:要么在公司内部设置定制库,要么手动下载和安装所需的jar文件到本地库。

    本地库是指 maven 下载了插件或者 jar 文件后存放在本地机器上的拷贝。在 Linux 上,它的位置在 ~/.m2/repository,在 Windows XP 上,在 C:Documents and Settingsusername.m2 epository ,在 Windows 7 上,在 C:Usersusername.m2 epository。当 maven 查找需要的 jar 文件时,它会先在本地库中寻找,只有在找不到的情况下,才会去远程库中找。

     

    参考资料:

    Maven中的几个重要概念(三):POM
    http://blog.csdn.net/onlyqi/article/details/6820561

    Apache Maven 入门篇(下)
    http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-2-405568-zhs.html

  • 相关阅读:
    CVE-2021-25646 Apache Druid远程命令执行漏洞复现
    CVE-2021-3156漏洞复现
    助力抗疫 Splashtop 远程控制软件限时免费
    Splashtop Business Access 的常见问题解答
    热烈祝贺 Splashtop 荣获“最佳远程办公解决方案”奖
    Mark Lee:Splashtop 如何成为最新的 10 亿美元估值技术独角兽
    Splashtop获5000万美元新投资 成为远程桌面行业独角兽
    热烈祝贺 Splashtop 赢得最佳远程桌面用户满意度得分
    [翻译系列]正则表达式简介
    tensorflow2.0 keras 迁移学习 删除预训练模型的最后一层(layer)
  • 原文地址:https://www.cnblogs.com/ghj1976/p/4977430.html
Copyright © 2020-2023  润新知