Maven入门,读这篇文章就够了(1)

简介: Maven入门,读这篇文章就够了

一年前,当我和小伙伴小龙一起做一个外包项目的时候,受到了严重的鄙视。我那时候还不知道 Maven,所以搭建项目用的还是最原始的方式,小龙不得已在导入项目的时候花了很长时间去下载项目依赖的开源类库。


出于对我的尊重,小龙没有破口大骂,而是非常委婉地说了一句:“二哥,你好歹也有一定的知名度了,竟然没用 Maven 构建项目,真让我大开眼界啊。”


作为一名富有上进心的程序员,不能忍啊。借此机会,有必要隆重地向大家介绍一下 Maven 了。


01、Maven 是什么?


不管英文功底好不好,先看看官网给出的介绍语吧:


Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

大致的意思就是说,Apache Maven 是一个项目管理和自动化构建工具,基于项目对象模型(POM)的概念,可以管理项目的构建、报告以及文档。作为 Apache 组织中的一个颇为成功的开源项目,Maven 主要服务于基于 Java 的项目构建、依赖管理和项目信息管理。


Maven 采用了约定优先配置的原则,这些原则如下表所示:


目录 目的

${basedir} 存放 pom.xml 和所有的子目录

${basedir}/src/main/java 存放 Java 源代码

${basedir}/src/main/resources 存放项目的资源文件,比如说 log4j.properties

${basedir}/src/test/java 存放测试类

${basedir}/src/test/resources 存放测试用的资源

${basedir}/src/main/webapp 存放 Web 前端文件

${basedir}/target 项目打包后的输出目录

${basedir}/target/classes 项目编译后输出目录

~/.m2/repository 默认的 Maven 仓库目录(~表示用户目录)

使用约定优先配置带来的最大好处就是项目的目录结构图非常的统一,不同的开发者在开发一个 Maven 项目的时候,文件存放位置几乎没有差别,省去了很多不必要的麻烦,有利于促进项目团队的标准化。


我们这个年代非常崇尚开源精神,几乎所有的 Java 项目都会借用一些第三方的开源类库,这些类库可以通过依赖的方式引入到项目中来。但随着依赖的增多,版本冲突、依赖臃肿的问题就会接踵而来。手工解决这些问题是十分枯燥的,幸运的是 Maven 提供了一个优秀的解决方案,它通过一个三维的坐标(<groupId>、<artifactId>、<version>)来准确地定位每一个开源类库。


另外,我认为 Maven 特别优秀的一点是,它把项目依赖的所有开源类库都从远程中央仓库下载到了指定的本地仓库中,也就是说,这些开源类库可以在多个项目之间共用,无需重复下载——假如我用 Maven 构建项目的话,小龙就不用下载那么多开源类库了,他的本地仓库中可能已经有了——我也就不会被鄙视了。


02、配置 Maven 环境


1)安装 Maven 之前,先确保电脑上已经安装了 JDK。


2)去 Maven 官网下载想要的版本并解压,下载地址为:


https://maven.apache.org/download.cgi


3)设置环境变量,主要是 MAVEN_HOME 和 Path。




4)打开命令行,输入 mvn -v 验证 Maven 是否配置成功。




5)Maven 的 conf 目录下包含了一个非常重要的文件 settings.xml,一般情况下,我倾向于将该文件复制到 ~/.m2/ 目录下——建议你也这么做。


打开该文件,在 <mirrors></mirrors> 节点下添加阿里云的镜像地址(参照下面的代码)。为什么要这么做呢?因为 Maven 默认的仓库在不翻强的情况下很难访问到。


<mirror>

     <id>alimaven</id>

     <name>aliyun maven</name>

     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

     <mirrorOf>central</mirrorOf>        

</mirror>


这里需要注意的是,<mirrorOf> 的值有下面四种方式:


<mirrorOf>*<mirrorOf>:匹配所有远程仓库,也就是说任何对于中央仓库的请求都会转至该镜像。

<mirrorOf>external:*<mirrorOf>:匹配所有不在本机上的远程仓库。

<mirrorOf>repo1,repo2<mirrorOf>:匹配仓库 repo1 和 repo2,使用逗号分隔多个远程仓库。

<mirrorOf>*,!repo<mirrorOf>:匹配所有远程仓库,repo 除外,使用感叹号将仓库从匹配中排除。

6)在 Eclipse 下依次选择菜单 Window → Show View → Other → Maven → Maven Workspace Build,查看镜像是否配置成功(我习惯了使用 Eclipse,所以请见谅,不过不管使用哪种集成开发环境,思路和步骤都大差不差)。




03、快速创建 Maven 项目


为了尽快步入重点,这一小节我会有意的避重就轻,没必要的步骤会略过。


1)在 Eclipse 中新建项目的时候选择 Maven Project。


2)在接下来选择项目类型的时候,选择 maven-archetype-quickstart,如下图所示。


3)然后指定项目参数的时候填写 group id 和 artifact id。


4)项目创建成功后的目录结构图如下图所示。

image.png


Maven 3 默认使用的依然是 JDK 1.5,不过我们可以为其配置更高版本的 JDK,后面会聊到。


04、详细分析 pom.xml


毫无疑问,Maven 项目的灵魂只有一个,那就是 pom.xml 文件,所以接下来我会详细地对其进行分析。


1)项目基本信息


pom.xml 文件的第一部分主要用来描述项目的基本信息。

<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.cmower</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>test</name>
</project>


①、<project> 是 pom.xml 的根元素,声明了相关的命名空间。


②、<modelVersion> 指定了当前项目对象模型(POM)的版本,对于 Maven 3.x 来说,该值只能是 4.0.0。


③、<groupId> 定义了项目的组名,这个组往往和项目所在的组织或公司关联。


④、<artifactId> 定义了当前 Maven 项目在组中唯一的 ID。


⑤、<version> 定义了项目的版本号,SNAPSHOT 为快照的意思,也就是说该项目还处于开发阶段。


⑥、<packaging> 定义了项目的打包类型,可选值有 war、jar 等。


⑦、<name> 定义了项目的名称。


相关文章
|
4月前
|
XML 前端开发 Java
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
|
7月前
|
Java Apache Maven
【Maven从入门到如土】Maven 核心程序解压和配置
【Maven从入门到如土】Maven 核心程序解压和配置
116 0
|
Java 数据库连接 API
Maven - 基础入门与安装配置
Maven - 基础入门与安装配置
141 0
|
1天前
|
存储 Java Linux
【Maven】——基础入门,插件安装、配置和简单使用,Maven如何设置国内源
Maven插件安装,Maven项目构建,依赖管理,Haven Help插件,Maven仓库,Maven如何设置国内源
|
6月前
|
Java Linux 测试技术
Maven命令大全:从安装到部署,一篇文章带你玩转Maven
本文由木头左介绍Maven,一个用于Java项目管理的工具,涉及Maven的安装配置(Windows和Linux)及核心命令,包括install、package、compile、clean、deploy、test、verify和site。通过这些命令,可以实现构建、打包、编译、测试、部署和生成项目站点等操作。
|
7月前
|
存储 XML Java
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
654 0
|
7月前
|
Java 应用服务中间件 Maven
【Maven从入门到如土】创建 Maven 版的 Web 工程
【Maven从入门到如土】创建 Maven 版的 Web 工程
97 0
|
7月前
|
Java Maven
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
78 0
|
7月前
|
存储 JavaScript Java
【Maven从入门到如土】快速使用 Maven:命令行环境
【Maven从入门到如土】快速使用 Maven:命令行环境
115 0
|
7月前
|
IDE Java 程序员
【Maven从入门到如土】Maven概述
【Maven从入门到如土】Maven概述
62 0

相关实验场景

更多