Maven入门学习

来源:互联网 发布:淘宝助理线上回收站 编辑:程序博客网 时间:2024/05/17 22:18

Maven是什么

Maven 是一个项目管理和构建自动化工具。是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven能做什么

  • 构建项目。如编译代码,打包成jar/war等。
  • 依赖管理。从<远程仓库>抓取项目依赖的jar到<本地仓库>;为编译器设置合适的CLASSPATH
  • 项目信息聚合。版本控制信息、项目描述、开发者信;项目站点:javadoc、测试报告、静态分析报告、源码版本日志报。

Maven项目学习

项目文件

pom.xml

pom描述
一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。
groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。
注释:GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

项目关系

  1. 继承关系。Super POM-Parent POM-Child POM.
Super POM
  • 所有项目都会隐式继承
  • 项目默认的目录结构/文件位置
  • 项目默认的打包文件名
  • 常用插件的版本和配置
    1. 仓库:<repositories>...</repositories> <pluginRepositories>...</pluginRepositories>中定义的内容。
    2. 构建生命周期。<build>...</build>之间的内容。在生命周期的定义中定义了插件、属性和资源过滤。
    3. profile。<profiles>...</profiles>中内容
Parent POM
  • 指定项目部署地址
  • 常用框架的版本和配置
  • 编译器版本

多模块

module是一些关系比较紧密的项目。目的:聚合构建。<modules> ...</module>之间定义。

本地资源库

Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。

中央存储库

当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库查找下载。

远程存储库

在Maven中,当你声明的库不存在于本地存储库中,也没有不存在于Maven中心储存库,该过程将停止并将错误消息输出到 Maven 控制台。
添加远程仓库(如Java.net或JBoss的储存库)示例:

<repositories>    <repository>        <id>java.net</id>          <url>https://maven.java.net/content/repositories/public/</url>    </repository>    </repositories>

Maven依赖库查询顺序:
本地资源库->中央存储库->远程存储库。
因此当需要使用外部资源的时候,通过Maven可以自动将POM文件中的坐标对应的外部资源下载到本地资源库,此后的任何事情都有Maven控制管理, 因此其对依赖库管理是一个非常好的工具。
当Maven依赖库不能下载的时候,需要添加外部依赖项到POM中。
在正常的POM-dependency属性中添加如下语句:

 <systemPath>${basedir}srclibldapjdk.jar</systemPath>

Maven具有依赖传递,我们只需要在每个项目POM定义直接依赖关系。 Maven自动处理其余部分。

创建应用程序文档

通过使用mvn site命令可以一步到位创建应用程序的文档。
在Maven有目标目录中创建一个网站。即../target/site目录中创建了一个网站。其使用称为Doxia一个文件处理引擎,它会读取多个源格式转换为通用文档模型的文档。

Maven快照

当模块出现细微的修改时候,不需要修改版本号(从而不需要频繁的更换POM文件以及不会造成版本号的滥用),将版本号设置为SNAPSHOT,然后发布到私服中,在发布的过程中,Maven会自动为构件打上时间戳。Maven会自动从仓库中检查模块A的2.1-SNAPSHOT的最新构件,当发现有更新时便进行下载。
快照是一个特殊版本,指出目前开发复印件。

参考文献
1. Maven教程

0 0