Maven项目管理工具参考知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaobryant/article/details/73609047

本笔记主要记录关于Maven知识体系的一些Pages和Tips!

一、Maven入门手册

阅读内容:Maven Getting Started GuideThe Philosophy of Maven 以及 The History of Maven

该文主要涉及的主要知识点包括:

  • 什么是Maven

  • 如何配置Maven项目

  • 如何对Maven应用进行编译/测试/安装

  • 快照(SNAPSHOT)版本简述

  • 如何添加资源文件以及进行过滤

  • 如何使用外部依赖

  • 如何将自己的Jar部署到远端*仓库

  • 如何构建其他类型的项目

  • 如何一次构建多个项目

二、Maven配置

阅读内容:Configuring Maven

该文提到Maven的配置分为三个层级:

  • Project:项目级,通过pom.xml静态配置。
  • Installation:安装级,Maven安装时配置。
  • User:用户级,对于不同的用户有不同的配置。

项目级配置内容定义了对一个项目所需的基本配置信息,该配置与环境和使用者无关,而其他的则是对于当前运行环境的配置。

对于项目级配置内容,一般通过pom.xml进行静态配置。对于用户级配置内容,一般通过${user.home}/.m2/settings.xml进行配置。

三、Maven项目骨架

阅读内容:Introduction to Archetypes

该文对archetype的概念进行了解释,archetype是Maven项目模板工具包。

An archetype is defined as an original pattern or model from which all other things of the same kind are made.

使用方法:

mvn archetype:generate

Maven中archetype常见类型有:

  • maven-archetype-archetype
  • maven-archetype-j2ee-simple
  • maven-archetype-mojo
  • maven-archetype-plugin
  • maven-archetype-plugin-site
  • maven-archetype-portlet
  • maven-archetype-quickstart
  • maven-archetype-simple
  • maven-archetype-site
  • maven-archetype-site-simple
  • maven-archetype-webapp

四、Maven项目的标准目录布局

阅读内容:Introduction to the Standard Directory Layout

该文介绍了Maven项目的标准目录布局。在进行Maven项目开发时,应该遵循该目录布局进行文件的创建和使用,具体如下:

${basedir}
|-- pom.xml
|-- src
|   |-- main
|   |   `-- java
|   |   `-- resources
|   |   `-- filters
|   `-- test
|   |   `-- java
|   |   `-- resources
|   |   `-- filters
|   `-- it
|   `-- assembly
|   `-- site
`-- LICENSE.txt
`-- NOTICE.txt
`-- README.txt

其中,有:

  • src/main/java 项目的源代码所在的目录
  • src/main/resources 项目的资源文件所在的目录
  • src/main/filters 项目的资源过滤文件所在的目录
  • src/main/webapp 如果是web项目,则该目录是web应用源代码所在目录,如html文件和web.xml等
  • src/test/java 测试代码所在的目录
  • src/test/resources 测试相关的资源文件所在的目录
  • src/test/filters 测试相关的资源过滤文件所在的目录
  • src/it 集成测试代码所在的目录,主要是供别的插件使用的
  • src/assembly 组件(Assembly)描述符所在的目录
  • src/site 站点文件
  • LICENSE.txt 项目的许可文件
  • NOTICE.txt 该项目依赖的库的注意事项
  • README.txt 项目的readme文件

五、POM文件介绍

阅读内容:Introduction to the POM

A Project Object Model or POM is the fundamental unit of work in Maven. It is an XML file that contains information about the project and configuration details used by Maven to build the project.

文中对POM文件的基本元素进行了简单的介绍,包括:

  • project
  • modelVersion
  • groupId
  • artifactId
  • packaging
  • version
  • name
  • url
  • description

该文介绍了两个概念:Super POMMinimal POM

  • Super POM

Super POM 是Maven的默认POM。所有的POM都会继承该Super POM,也就是说,当你创建项目时,你所使用的POM都是继承了该Super POM的。

其位于$M2_HOME/lib/maven-model-builder-xxx.jarorg/apache/maven/model/pom-4.0.0.xml中。

  • Minimal POM

一个Minimal POM必须包含下面的指定内容:project/modelVersion/groupId/artifactId/version。另外,可以看到,Minimal POM并未强制要求设置repositories,因为其继承了Super POM,在Super POM中定义了默认的repositories信息。

另外,在该文中,个人觉得很重要的一部分就是关于项目间关系的举例介绍。

  • 项目继承(project inheritance)

项目继承在各自的子模块的POM中指定parent信息。对于如何使用项目继承,文中给出了两个例子Example1和Example2(重点理解)。

  • 项目聚合(project aggregation)

与项目继承不同的是,其放弃在子模块的POM中指定parent信息,而是在parent POM中指定模块信息。如何实现项目聚合?首先,更改parent POM的packaging值为pom;然后,在parent POM中注册modules信息。对于具体案例,文中给出了Example3和Example4两个例子(重点理解)。

  • 同时使用项目继承和项目聚合

Opendaylight中使用该方式进行项目管理。

对于项目关系,总结三条原则:

  1. 对每一个child POM指定其parent POM
  2. 改变parent POM的packaging属性为pom
  3. 在parent注册每个子模块信息

文中给出了Example5的案例进行参考。

同时,该文介绍了如何在POM文件中使用变量。

六、Maven仓库

阅读内容:Introduction to Repositories

该文主要对于Maven的仓库进行了简要的介绍。对于仓库的介绍,也可以参考《Maven实战》的第6章关于仓库的讲解。

七、Maven依赖机制详解

阅读内容:Introduction to Dependency Mechanism

Dependency management is one of the features of Maven that is best known to users and is one of the areas where Maven excels.

该文主要介绍了Maven的依赖机制,解释了传递性依赖/依赖范围/依赖管理/系统依赖等内容。着重掌握文中的几个例子。

另外,《Maven实战》的第5章对于坐标和依赖的讲解也很仔细,可以参照阅读。

八、小结

Maven的核心内容就是上面的一些知识点,推荐阅读官网文档和《Maven实战》等书籍,结合实践加深理解。

上一篇:SqlServer Bug:复制架构更改参数(replicate_ddl)无效


下一篇:配置android环境遇到的问题及解决办法