类似于 PHP 中的 Composer,NodeJS 中的 npm,Java 用 Maven 来管理依赖关系。

实际上,Maven 负责管理 Java 项目开发过程中的几乎所有的东西:

  • 版本控制:Maven 有自己的版本定义和规则
  • 依赖管理:Maven 的基础功能
  • 构建:支持多种应用程序类型,提前定义了对应的构建规则和工具集
  • 输出管理:项目构建的产物可以用 Maven 管理,可以加到指定的用户库中
  • 文档:通过 site 命令发布各种文档信息,包括构建过程的输出报告,javadoc 文档等
  • 项目关系:微服务模式下,一个项目通常由几个模块组成,用 Maven 可以完美应对

Maven 生命周期

POM 项目对象模型

pom.xml 元素

每个 Maven 项目的根目录下都有一个 pom.xml 文件,包含各种配置信息。Maven 用这个文件来构建项目。其中的可配置项有:

project dependencies

plugins

goals

build profiles

project version

developers

mailing list

其中,工程组(groupId)、名称(artifactId)和版本(version)属性是工程的唯一标识。

根项目配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion> <groupId>com.kikakika.myproject-group</groupId>
<artifactId>myproject</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>myproject_common</module>
<module>myproject_base</module>
</modules> </project>

子模块的配置:

<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>myproject</artifactId>
<groupId>com.kikakika.myproject-group</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>myproject_common</artifactId> </project>

继承关系

每个项目根目录下的 pom.xml 文件可以被子项目或子模块的所继承,从而实现尽可能少的配置。

Maven 的构建生命周期

参考:http://wiki.jikexueyuan.com/project/maven/build-life-cycle.html

使用 Maven 构建项目时,可以指定多个基本的阶段,每个阶段中可以使用 pre 和 post 在特定阶段之前或之后执行目标:

资源拷贝-》编译-》单元测试-》打包创建 JAR 包或 WAR 包-》集成测试-》安装部署到本地或远程仓库

Maven 构建工程时,每个阶段都有以下三个标准的生命周期:

  • clean:清理之前的构建信息
  • default(or build):构建项目
  • site:创建新的报告文档、部署站点

Maven 仓库

参考:http://www.runoob.com/maven/maven-repositories.html

通过 Maven 获取依赖时的顺序关系:

  1. 现在本地仓库查找依赖,如果依赖存在则停止查找
  2. 如果本地仓库不存在指定的依赖,则去官方提供的中央仓库查找,如果找到了则停止,如果没找到且没有配置远程仓库,则报错停止,否则去远程仓库查找
  3. 如果在远程仓库找到依赖,则停止,否则报错

Java 项目管理工具 - Maven的更多相关文章

  1. ③---Java项目管理工具MAVEN安装与配置

    Java项目管理工具MAVEN安装配置以下将为大家介绍Java项目管理工具MAVEN安装及其配置. 一.下载MAVEN安装文件 maven下载地址:https://maven.apache.org/d ...

  2. java项目管理工具maven使用初级

    一.前言        早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基础 ...

  3. Maven java项目管理工具

    Maven java项目管理工具 1.安装maven 下载最新的maven 下载地址 http://maven.apache.org/download.cgi 传到要安装的目录 例如/opt/下 # ...

  4. 向西项目管理工具Maven一片

    前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...

  5. 《从零开始搭建游戏服务器》项目管理工具Maven

    简介 什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架. Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在 ...

  6. 关于项目管理工具 maven

    众所周知,maven是目前很常用的项目管理工具.一般情况下,通过在pom.xml添加相应内容,再maven-->update就会自动把相应的jar包下载.配置好,非常方便. 一般每新建一个wor ...

  7. idea集成项目管理工具 --- Maven 并且【配置tomcat】

    介绍: 1.项目管理工具 POM    Porject Object Model 2.可以管理项目中的的jar包依赖 3.maven   jar包中央仓库:http://mvnrepository.c ...

  8. 项目管理工具Maven的安装与使用

    一.Maven的简介 1. 什么是maven 是Apache下的一个开源的项目,是纯java编写,并且只是用来管理java项目. 2. Maven的好处 maven项目管理jar节省磁盘空间 一键构建 ...

  9. 项目管理工具maven(一)

    1 Maven的概述 1.1 依赖管理 就是对jar包的统一管理  可以节省空间 1.2 项目一键构建 编码  编译  测试(junit)  运行  打包  部署 一个 tomcat:run就能把项目 ...

随机推荐

  1. 深入理解JAVA虚拟机 虚拟机字节码执行引擎

    执行引擎 执行引擎是java虚拟机的重要组成部分.它的作用是接收字节码,解析字节码,执行并输出执行结果. 虚拟机是相对于物理机的概念,物理机的执行引擎是直接建立在处理器.寄存器.指令集和操作系统的层面 ...

  2. Linux系统中的硬件问题如何排查?(1)

    在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工作,即使是经验相当丰富的用户有时也会遇上自己搞不定的状况,本文分享一些实用的技巧与处理方法,希望有助于读者朋友理解.查明并最终搞 ...

  3. thinkphp读取器和修改器

    读取器 如果在模型中,自定义了方法,那么读取器会读取模型中自定义的方法,否则会调用默认的方法. 写入器

  4. JSP 和Servlet 有有什么关系?

    Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容. JSP本质上是Servlet的一种简易形式, JSP会被服务器处理成一个类似于Servle ...

  5. 【NOIP2016提高A组模拟9.24】总结

    第一题纯模拟,结果那个出题人脑子似乎进水了,空间限制开了1G!!! 导致我捉摸了半天为什么空间要开那么大,最后只能得出上面的结论. 第二题是个矩阵快速幂,比赛上我没把递推式求出来,但是根据各种乱搞,得 ...

  6. 数据库导出数据到excel格式

    场景: 由于业务人员经常会找DBA导出一些数据,写了一个自动导出脚本. import pymysql from openpyxl import Workbook from openpyxl.write ...

  7. jQuery_完成表格的隔行换色

    表格的颜色一样不利于区分,而利用jQuery则可以很方便的进行表格的隔行换色操作,原表如下: 这样看着很不方便,但是隔行换色之后非常便捷清楚. 代码如下: <!DOCTYPE html> ...

  8. [BZOJ4456][ZJOI2016]旅行者:分治+最短路

    分析 类似于点分治的思想,只统计经过分割线的最短路,然后把地图一分为二. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(regist ...

  9. Oracle升级11.2.0.3-11.2.0.4(Windows)

    背景:解决11.2.0.3带来的ora-08103错误,将数据库seinescm升级到11.2.0.4版本方法:另辟路劲安装11.2.0.4版本数据库软件,再对现有的数据库进行升级步骤:1.    检 ...

  10. java学习之- 创建线程run和start特点

    标签(空格分隔): run,start 为什么做run方法的覆盖? 1.Thread类用于描述线程,该类就定义一个功能用于存储线程要运行的代码,该存储功能就是run方法: 也就是说Thread种的ru ...