Maven 入门实战(1)--简介及安装

打印 上一主题 下一主题

主题 925|帖子 925|积分 2775

Maven 是一种软件项目管理和理解工具;它基于项目对象模型(POM),从中央位置管理项目的构建、报告和文档,并帮助开发人员轻松管理依赖项并自动化构建过程。
1、简介

1.1、项目目录

Maven 使用约定优于配置的原则,提倡使用一个共同的标准目录结构。
目录说明${basedir}项目根目录,存放 pom.xml 和 所有的子目录${basedir}/src/main/javajava 源代码${basedir}/src/main/resources资源目录${basedir}/src/test/java测试代码${basedir}/src/test/resources测试用的资源${basedir}/src/main/webapp/WEB-INFweb 应用目录${basedir}/target打包输出目录${basedir}/target/classes编译输出目录${basedir}/target/test-classes测试编译输出目录~/.m2/repositoryMaven 默认的本地仓库目录1.2、生命周期

Maven 有三个标准的生命周期:

  • clean:项目清理
  • default(build):项目部署
  • site:项目站点文档创建
每个生命周期又包含多个阶段。
1.2.1、clean 生命周期

生命周期阶段说明
pre-clean执行一些需要在 clean 之前完成的工作
clean移除所有上一次构建生成的文件
post-clean执行一些需要在 clean 之后完成的工作
1.2.2、default(build) 生命周期

生命周期阶段说明validate(校验)校验项目是否正确,是否包含所有必要信息以完成项目的构建initialize(初始化)初始化构建状态,比如设置属性值generate-sources(生成源代码)生成用于编译阶段中的任何源代码process-sources(处理源代码)处理源代码,比如说,过滤任意值generate-resources(生成资源文件)生成将会包含在项目包中的资源文件process-resources (处理资源文件)复制和处理资源到目标目录,为打包阶段最好准备compile(编译)编译项目的源代码process-classes(处理类文件)处理编译生成的文件,比如说对 Java class 文件做字节码改善优化generate-test-sources(生成测试源代码)生成用于编译阶段中的任何测试源代码process-test-sources(处理测试源代码)处理测试源代码,比如说,过滤任意值generate-test-resources(生成测试资源文件)为测试创建资源文件process-test-resources(处理测试资源文件)复制和处理测试资源到目标目录test-compile(编译测试源码)编译测试源代码process-test-classes(处理测试类文件)处理测试源码编译生成的文件test(测试)使用合适的单元测试框架运行测试(如:Juint )prepare-package(准备打包)在实际打包之前,执行任何的必要的操作为打包做准备package(打包)将编译后的文件及资源文件打包成可分发格式的文件,如:JAR、WAR 或者 EAR 文件。pre-integration-test(集成测试前)在执行集成测试前进行的必要动作,如:搭建需要的环境integration-test(集成测试)部署项目到可以运行集成测试的环境中post-integration-test(集成测试后)在执行集成测试完成后进行的必要动作,如:清理集成测试环境verify (验证)运行任意的检查来验证项目包有效且达到质量标准install(安装)安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖deploy(部署)将最终的项目包复制到远程仓库,与其他开发者和项目共享1.2.3、site 生命周期

生命周期阶段说明
pre-site执行一些需要在生成站点文档之前完成的工作
site生成项目的站点文档
post-site执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy将生成的站点文档部署到特定的服务器上
1.3、Maven 插件

Maven 每个生命周期中都包含着一系列的阶段(phase);这些 phase 相当于 Maven 提供的统一的接口,这些 phase的实现由 Maven 的插件来完成。我们在输入 mvn 命令的时候,比如 mvn clean,clean 对应的就是 clean 生命周期中的 clean 阶段。但是 clean 的具体操作是由 maven-clean-plugin 来实现的。所以说 Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:
插件通常提供了一个目标的集合,可以使用下面的语法执行:
  1. mvn [plugin-name]:[goal-name]
复制代码
例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:
  1. mvn compiler:compile
复制代码
常用插件:
插件说明clean清理目标文件,删除目标目录compiler编译 Java 源文件surefile运行 JUnit 单元测试,创建测试报告jar构建 JAR 文件war构建 WAR 文件javadoc为工程生成 Javadoc1.4、仓库

Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有 JAR、WAR、ZIP、POM 文件的地方。Maven 仓库有三种类型:本地(local)、中央(central)、远程(remote)。
1.4.1、本地仓库

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。Maven 本地仓库目录默认为:%USER_HOME%/.m2/repository;要修改默认位置,可在 Maven 的 settings.xml 文件中设置另一个路径:
  1. <settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
  2.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
  4.   <localRepository>d:/repo</localRepository>
  5. />
复制代码
1.4.2、中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源 Java 构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的 Java项目依赖的构件都可以在这里下载到。中央仓库不需要配置,但需要通过网络才能访问。maven 社区提供了一个网站用来搜索浏览中央仓库的内容:https://central.sonatype.com/;通过该网站可以方便搜索查看相应的构件。
1.4.3、远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
1.4.4、Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 会按照以下顺序查找依赖的库:
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库。
步骤 3 - 如果没有设置远程仓库,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
2、安装

在官网(https://maven.apache.org/download.cgi)下载安装包并解压,然后配置环境变量即可;这里使用 3.8.8 版本安装部署。
2.1、Windows 安装

这里假设 Maven 的解压目录为:D:\apache\apache-maven-3.8.8,新建用户变量 MAVEN_HOME

编辑用户变量 Path,添加变量值:%MAVEN_HOME%\bin

打开 cmd,检查安装是否成功:
  1. C:\Users\admin>mvn -version
  2. Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
  3. Maven home: D:\apache\apache-maven-3.8.8
  4. Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: D:\soft\Java\jdk1.8.0_321\jre
  5. Default locale: zh_CN, platform encoding: GBK
  6. OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
复制代码
2.2、Linux 安装

这里假设 Maven 的解压目录为:/home/mongo/soft/apache-maven-3.8.8,编辑 ~/.bash_profile 设置环境变量:
  1. export MAVEN_HOME=/home/mongo/soft/apache-maven-3.8.8
  2. export PATH=$PATH:$MAVEN_HOME/bin
复制代码
使配置生效:source ~/.bash_profile;然后检查安装是否成功:
  1. app4:[/home/mongo] mvn -verion
  2. Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
  3. Maven home: /home/mongo/soft/apache-maven-3.8.8
  4. Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: /home/mongo/soft/jdk1.8.0_321/jre
  5. Default locale: en_US, platform encoding: UTF-8
  6. OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
复制代码
 
 
参考:https://www.runoob.com/maven/maven-tutorial.html。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表