类似于 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. SpringBootMVC02——Spring Data JPA的使用&JSP的使用

    Spring Data JPA的使用 实体层 package com.littlepage.domain; import javax.persistence.Entity; import javax. ...

  2. jquery在线引用地址大全 全部来自官网

    谷歌的就算了,容易被屏蔽,下面都是官方原版的 最新版本 <script src="http://code.jquery.com/jquery-latest.js">&l ...

  3. 连接gitlab

    https://www.cnblogs.com/mengyu/p/7761340.html 一.PyCharm配置Git的环境 1.PyCharm 连接Git首先需要本机安装Git软件; 2.PyCh ...

  4. 一张图明白jenkins和docker作用

    可以看出,jenkins充当的是一个自动构建的作用,构建完后自动部署到机器上.如果没有docker,那么就是直接把打包好的jar包直接部署到服务器.现在是把jar包部署到服务器上的docker容器上. ...

  5. Nginx 502 Bad Gateway 的错误的解决方案

    我用的是nginx反向代理Apache,直接用Apache不会有任何问题,加上nginx就会有部分ajax请求502的错误,下面是我收集到的解决方案. 一.fastcgi缓冲区设置过小 出现错误,首先 ...

  6. .net reactor 加密混淆使用办法

    https://www.cnblogs.com/bile/p/10250888.html 概述:安装了.net reactor之后,可以在安装目录下找到帮助文档REACTOR_HELP.chm,目前没 ...

  7. linux-shell脚本基础-2

    1,用户组 添加用户 useradd -u UID -o -g 指定 GID或组名 -c 注释信息 -d 家目录 -s shell -G 附加组 -r 系统用户 -m 家目录,系统用户 -M 不创建家 ...

  8. 文件操作:rewind()

    函数名: rewind() 功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头   注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动 ...

  9. HDU2196computer

    就是求每个点为起始点的最长链的长度. 写一下各个数组的意思吧. f[i][0]为点i向下走最长的距离:f[i][1]为点i向下走第二长的距离: xia[i][0]为点i向下走最长距离所要走的儿子节点: ...

  10. Centos7安装Redis3.X

    本文只是简单搭建Redis,为了整合ELK用,后面会详细写. Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高 ...