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 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。
groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。
注释:GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
项目关系
- 继承关系。Super POM-Parent POM-Child POM.
Super POM
- 所有项目都会隐式继承
- 项目默认的目录结构/文件位置
- 项目默认的打包文件名
- 常用插件的版本和配置
- 仓库:
<repositories>...</repositories> <pluginRepositories>...</pluginRepositories>
中定义的内容。 - 构建生命周期。
<build>...</build>之间的内容。
在生命周期的定义中定义了插件、属性和资源过滤。 - 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教程
- Maven学习总结----Maven入门
- Maven 入门学习
- Maven学习入门
- maven入门学习
- Maven入门学习
- Maven入门学习
- Maven入门学习
- Maven学习:入门介绍
- Maven 学习 - 入门
- maven入门学习
- Maven入门学习
- maven入门学习
- Maven 入门学习
- Maven 入门学习.md
- Maven 入门学习
- Maven入门学习
- Maven入门与学习
- Maven入门学习
- YTU 2924: 文件操作--二进制文件读入
- SLIC超像素分割
- MyBatis最新官方下载地址
- 【OSI】--数据链路层
- redis类型[string 、list 、 set 、sorted set 、hash]
- Maven入门学习
- 关于undefined reference to——C++模板类文件组织方式
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- ADO.NET提供的Connection类总结
- C++语言的表达式模板:表达式模板的入门性介绍
- R连接mysql以及一些操作
- HTTP状态代码以及定义(深度好文,赶紧收藏)
- Caffe学习系列(17):模型各层特征和过滤器可视化
- (OK) 运行cBPM in Fedora23