zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    关于extern对变量的使用
    MediaPipe Android Archive
    MediaPipe框架结构
    bazel构建C++工程
    Ubuntu安装ss(终端+浏览器)
    Ubuntu下MediaPipe的环境配置
    Ubuntu使用frp进行内网穿透
    Ubuntu中ssh-server的安装与开机自启动
    Ubuntu系统挂载新硬盘的方法
    Ubuntu16.04下安装TensorFlow
  • 原文地址:https://www.cnblogs.com/ghj1976/p/4977430.html
Copyright © 2011-2022 走看看