Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。
基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven的功能
构建、文档生成、报告、依赖、SCMs、发布、分发、邮件列表
约定配置
Maven使用约定大于配置的原则,使用一个非常统一常见的目录结构。
POM
POM(Project Object Model,项目对象模型)是 Maven 工程的基本工作单元。是一个XML文件??包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
Maven构建的生命周期
Maven构建配置文件
构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值。使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Development)环境,定制构建方式。
mvn test -Ptest
Maven仓库
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
三种:本地、中央、远程。其中公司开发中,远程可能是最有用的。
Maven插件Plugin
插件通常提供了一个目标的集合,并且可以使用下面的语法执行:
<code>mvn [plugin-name]:[goal-name]</code>
例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:
<code>mvn compiler:compile</code>
Maven创建Java项目
mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"
Maven构建项目
mvn clean package
mvn clean compile
java -cp . com.companyname.bank.App
Maven引入外部依赖
引入第三方库文件到项目。
pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。
要添加依赖项,我们一般是先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。
Maven项目模板
Maven 使用 archetype(原型) 来创建自定义的项目结构,形成 Maven 项目模板。(与前面Maven创建Java项目可以关联起来)
archetype 也就是原型,是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板创建一个项目结构。
Maven快照和自动化构建??
Maven依赖管理
Maven 一个核心的特性就是依赖管理。当处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。
问题之可传递依赖:一种相当常见的情况,比如说 A 依赖于其他库 B。如果,另外一个项目 C 想要使用 A ,那么 C 项目也需要使用库 B。
Maven自动化部署??
Maven和IntelliJ
IntelliJ IDEA 已经内建了对 Maven 的支持。
IDEA 和 Maven 有兼容问题要注意。