Maven入门教程
  WfuqbRz7OUwd 2023年11月13日 21 0


 一、Maven是什么?

        Maven就是项目管理工具,用来构建项目的。也就是清理、编译、测试、运行、打包、安装整个过程都交给Maven来管理,整个过程就是构建。

二、Maven安装与配置

        1、官网下载

Maven – 下载 Apache Maven  (版本看个人需求)

        然后解压(gz包或者zip包)到最好没有中文没有空格的路径。目录结构如下:

Maven入门教程_目录结构

Maven入门教程_生命周期_02编辑

 2、配置环境变量

        Maven本身就是基于Java写的,所以在安装配置之前,有必要将Java的运行环境安装配置好,JDK安装好。

        Windows环境如下:

        配置内容同JDK的配置内容一样,也是两部分:一部分是在系统环境变量或者用户环境变量中配置一个MAVEN_HOME;另一部分也是将Maven里面的bin目录追加到Path环境变量后面。

Maven入门教程_生命周期_03

Maven入门教程_maven_04编辑

         3、测试安装是否成功:

        win+r  然后 cmd 进入命令行 输入mvn -version 或者 maven -v 查看安装的Maven信息以及JDK信息,成功打印说明配置成功。

三、Maven目录结构

  1.  bin:Maven运行脚本、命令

在命令行输入任何一条 mvn 命令时,实际上就是在调用这下些脚本。不带 cmd 后缀的命令就是 UNIX 平台的 shell 脚本,带 cmd 的是基于Windows平台的脚本。

      2. boot:该目录只包含一个文件,plexus-classworlds-2.7.0.jar(plexus-classworlds 是一个类加载器框架,Maven使用该框架加载自己的类库)。

      3. conf:配置文件 setting.xml 文件,修改该文件就可以在机器上全局的制定Maven的行为。但一般情况下,更倾向于复制该文件到 ~(用户User目录)/.m2/ 目录下,然后修改该文件,在用户范围内制定Maven的行为。

      4.lib:包含Maven运行时所需要的Java类库,包括第三方的依赖类库。用户可以在这个目录中找到Maven内置的超级POM:

Maven入门教程_生命周期_05

Maven入门教程_maven_06编辑

       5. LICENSE.TXT:记录了 Maven 使用的软件许可证 Apache License Version 2.0。

       6. NOTICE.txt:记录了maven包含的第三方软件。
       7. README.txt:记录了maven的简要介绍。包括安装需求及如何安装的简要指令等。

四、Maven 优点

  1.  Maven 不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库,能够帮我们自动下载构件。
  2. 为了解决的依赖的增多,版本不一致,版本冲突,依赖臃肿等问题。他通过一个坐标系统来精准定位每一个构件(artifact)。
  3. 还能帮助我们分散在各个角落的项目信息,包括项目描述,开发者列表、版本控制系统、许可证、缺陷管理系统地址。
  4. Maven还为全世界的开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源软件(下载贼慢,支持正版 _ 但我用镜像!!!)。通过衍生工具(Nexus)我们还能对其进行快速搜索。
  5. Maven 对于目录结构有要求,约定优于配置,用户在项目切换就省去了学习成本。

五、关于Maven项目(工程)约定目录结构

Maven入门教程_maven_07

Maven入门教程_生命周期_08编辑

Maven约定目录结构.

每一个maven项目在磁盘中都是一个文件夹(项目-Hello)

Hello/

        --/src

        ------/main                     #存放主程序java代码和配置文件

        ------------/java               #程序包和包中的java文件

        ------------/resource       #java程序中要使用的配置文件

        ------/test                      #测试程序的代码文件(可以没有)

        ------------/java              #测试程序包和包中的java文件

        ------------/resource      #测试程序中要使用的配置文件

        -----/pom.xml               #maven的核心文件(maven项目必须有)

六、Maven 常用命令

  • mvn clean  清理编译后的目录
  • mvn compile  编译,只编译main目录,不编译test中代码
  • mvn test-compile  编译test目录中代码
  • mvn test  运行test里边代码测试
  • mvn package  打包
  • Java项目打成 jar 包
  • web 项目打成war包
  • mvn install  发布部署项目到本地仓库,在本地Repository中安装 jar ,供其他工程使用
  • tomcat run  一键构建项目
  • mvn site  生成项目的相关文档和生成文档相关的元素,包括 name、url 和description等

七、Maven 的“三大生命周期”

  1.  clean Lifecycle:在进行真正的构建之前进行一些清理工作。mvn clean

clean的目的是清理项目。
每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有Clean生命周期,也有clean阶段。
包含3个阶段:
1.pre-clean 执行一些清理前需要完成的工作
2.clean 清理上一次构建过程中生成的文件,比如编译后的class文件等
3.post-clean 执行一些清理后需要完成的工作

       2.  default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。

generate-resources: 产生主代码中的资源在classpath中的包
process-resource: 复制并处理资源文件,至目标目录,准备打包。
compile: 编译项目的主源码.一般来说:编译src/main/java目录下的java文件至项目输出的主classpath目录中
test-compile:编译项目的测试代码,是编译src/test/java目录下的java文件至项目输出的测试classpath目录中
test: 使用单元测试框架运行测试,测试代码不会被打包或部署.
package:打包成可发布的格式
install:将包安装到Maven本地仓库,供本地其他Maven项目使用
deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用

PS:运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要。

        3.  site Lifecycle: 生成项目报告,站点,发布站点。
             目的:建立和发布项目站点

pre-site:执行一些在生成项目站点之前需要完成的工作.
site 生成项目站点文档
post-site 执行一些在生成项目站点之后需要完成的工作.
site-deploy :将生成的项目站点发布到服务器上

八、scope依赖作用域

也可以称作依赖范围:maven中的的依赖,会根据场景和所处阶段发生变化。scope属性有五种:

Maven入门教程_目录结构_09

Maven入门教程_maven_10编辑

注:system_不推荐使用,使用system作用域不会去本地仓库寻找依赖,要指定本地绝对路径。

九、maven能够实现自动化构建.核心maven的9个核心概念

  1. POM:一个文件 名称为pom.xml,pom翻译过来叫项目对象模型
  2. 约定的目录结构:maven项目的目录和文件的位置都是规定的
  3. 坐标:是一个唯一的字符串,用来表示资源
  4. 依赖管理:管理项目中用到的jar文件
  5. 仓库管理:资源存放位置
  6. 生命周期:maven工具构建项目的过程就是它生命周期
  7. 插件和目标:执行maven构建的时候用的工具叫插件
  8. 继承
  9. 聚合


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  0T7ubTGAy0pw   2023年11月02日   63   0   0 javaapachemaven
  4crWjjQBqFOy   2023年11月13日   23   0   0 javamavenandroid
  Tj2IEF7IlkTw   2023年11月13日   27   0   0 ciide生命周期
WfuqbRz7OUwd