项目构建与Apache Maven

在这里插入图片描述

什么是构建工具?

构建工具是将软件项目构建相关的过程自动化的工具。构建一个软件项目通常包含以下一个或多个过程:

  • 生成源码(如果项目使用自动生成源码);
  • 从源码生成项目文档;
  • 编译源码;
  • 将编译后的代码打包成JAR文件或者ZIP文件;
  • 将打包好的代码安装到服务器、仓库或者其它的地方;

有些项目可能需要更多的过程才能完成构建,这些过程一般也可以整合到构建工具中,因此它们也可以实现自动化。

自动化构建过程的好处是将手动构建过程中犯错的风险降到最低。而且,自动构建工具通常要比手动执行同样的构建过程要快很多。

什么是Maven?

Maven是意第绪语,意为知识的积累,最初是为了简化Jakarta Turbine项目中的构建过程,以一种标准的方式来构建项目,明确定义项目的组成部分,用一种简便的方法来发布项目信息,以及一种在多个项目中共享JAR的方法,所以诞生了一个可以用于构建和管理任何基于Java的项目的工具 —— Maven。 Maven可以初始化创建一些东西让Java开发人员的日常工作变得更加轻松,并且通常有助于理解任何基于Java的项目。

Maven是一个强大的Java项目构建工具。当然,你也可以使用其它工具来构建项目,但由于Maven是用Java开发的,因此Maven被更多的用于Java项目中。

事实上,Maven开发者认为Maven不仅仅是一个构建工具。你可以去阅读他们的文档,看看他们是怎么想的。但是现在,我们就把Maven当作一个构建工具,当你理解和开始使用Maven后,你就明白Mavan到底是什么了。

安装Maven

安装Maven,访问 Apache Maven 下载,然后按照安装指南的步骤即可。总结一下,你需要做:

  1. 下载并解压Maven;
  2. 在环境变量中添加 MAVEN_HOME 并设置为解压后的Maven目录;
  3. Maven目录下bin文件夹路径追加到PATH环境变量中:在Windows上是 %MAVEN_HOME%/bin,在Unix系统上是 $MAVEN_HOME/bin
  4. 打开终端输入mvn -v,然后回车;

输入 mvn -v 命令后,终端上显示当前安装的Maven版本信息说明Maven已经安装好了。

注意:Maven运行需要Java环境,因此也需要安装Java,Java版本1.5及以上;

Maven核心概念

Maven的中心思想是POM文件(项目对象模型)。POM文件是以XML文件的形式表述项目的资源,如源码、测试代码、依赖(用到的外部Jar包)等。POM文件应该位于项目的根目录下。

下图说明了Maven是如何使用POM文件的,以及POM文件的主要组成部分:
在这里插入图片描述
POM文件

当你执行一条Maven命令的时候,你会传入一个pom文件。Maven会在该pom文件描述的资源上执行该命令。

构建生命周期、阶段和目标

Maven的构建过程被分解为构建生命周期、阶段和目标。一个构建周期由一系列的构建阶段组成,每一个构建阶段由一系列的目标组成。当你运行Maven的时候,你会传入一条命令。这条命令就是构建生命周期、阶段或目标的名字。如果执行一个生命周期,该生命周期内的所有构建阶段都会被执行。如果执行一个构建阶段,在预定义的构建阶段中,所有处于当前构建阶段之前的阶段也都会被执行。

依赖和仓库

Maven执行时,其中一个首要目标就是检查项目的依赖。依赖是你的项目用到的jar文件(java库)。如果在本地仓库中不存在该依赖,则Maven会从中央仓库下载并放到本地仓库。本地仓库只是你电脑硬盘上的一个目录。你可以根据需要制定本地仓库的位置。你也可以指定下载依赖的远程仓库的地址。这些将会在后续的小节中详细介绍。

插件

构建插件可以向构建阶段中增加额外的构建目标。如果Maven标准的构建阶段和目标无法满足项目构建的需求,你可以在POM文件里增加插件。Maven有一些标准的插件供选用,如果需要你可以自己实现插件。

配置文件

配置文件用于以不同的方式构建项目。比如,你可能需要在本地环境构建,用于开发和测试,你也可能需要构建后用于开发环境。这两个构建过程是不同的。在POM文件中增加不同的构建配置,可以启用不同的构建过程。当运行Maven时,可以指定要使用的配置。

Maven与Ant

Ant是Apache另一个流行的构建工具。如果你熟悉Ant,正在学习Maven,你将会注意到两者在方法上的区别。

Ant使用命令式的方式,即你需要在Ant构建文件里指定Ant应该执行的操作。你可以指定低级别的操作,如复制文件、编译代码等。你指定操作,还需要执行这些操作执行的顺序。Ant没有默认的目录结构。

Maven使用声明式的方式,即你需要在POM文件里指定做什么,而不是如何做。POM文件描述项目的资源-而不是如何构建。相比而言,Ant构建文件描述的是如何构建项目。在Maven里,如何构建是在“Maven 构建声明周期、阶段和目标”中预定义的。

Maven POM 文件

Maven的POM文件是一个xml文件,描述项目用到的资源,包括源代码目录、测试代码目录等的位置,以及项目依赖的外部jar包。

POM文件描述的是构建“什么”,而不是“如何”构建。如何构建是取决于Maven的构建阶段和目标。当然,如果需要,你也可以向Maven构建阶段中添加自定义的目标。

每一个项目都有一个POM文件。POM文件即pom.xml,应该放在项目的根目录下。一个项目如果分为多个子项目,一般来讲,父项目有一个POM文件,每一个子项目都有一个POM文件。在这种结构下,既可以一步构建整个项目,也可以各个子项目分开构建。

本文剩下的章节,主要介绍POM文件最重要的部分。POM文件的完整文档,参考Maven POM Reference

 
如下为一个最小化的POM文件示例:

<?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.codedancing</groupId>
    <artifactId>spring</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>
发布了21 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/codedancing/article/details/102726559