手把手带你学mave【Part4】

140 阅读4分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解maveb的核心文件、坐标以及声明周期,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan

🎯1. Maven的核心文件pom.xml

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。 执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

 <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">
     <!-- Maven模型的版本 -->
     <modelVersion>4.0.0</modelVersion>
     <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,Maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
     <groupId>com.jinhuan.Maven</groupId>
     <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的  -->
     <artifactId>HelloWorld</artifactId>
     <!-- 当前项目版本号:同一个项目开发过程中可以发布多个版本,此处标示0.0.1版 -->
     <!-- 当前项目版本号:每个工程发布后可以发布多个版本,依赖时调取不同的版本,使用不同的版本号 
  当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本
   -->
     <version>0.0.1-snapshot</version>
     <!--打包类型,一般有jar、war、pom等-->
     <packaging>jar</packaging>
     <!-- 名称:可省略 ,常用于 Maven 生成的文档。-->
     <name>Hello</name>
     <!--项目描述:可省略,常用于 Maven 生成的文档--> 
     <description > </description>
     <!-- 项目依赖构件配置,配置项目依赖构件的坐标 -->
     <dependencies>
         <!-- 依赖设置 ,可以有多个dependency节点-->  <dependency>
         <!-- 依赖组织名称 -->
         <groupId>junit</groupId>
         <!-- 依赖项目名称 -->
         <artifactId>junit</artifactId>  <!-- 依赖版本名称 -->
         <version>4.12</version>
         <!-- 依赖范围:test包下依赖该设置 -->  <scope>test</scope>
         </dependency>
     </dependencies>
     <!-- 项目构建配置,配置编译、运行插件等。-->
     <build>......</build>
 </project>

🎯2. Maven的坐标

🌈2.1什么是坐标

在平面几何中坐标(x,y)可以标识平面中唯一的一点。在Maven中坐标就是为了定位一个唯一确定的jar包。 Maven世界拥有大量构件,我们需要找一个用来唯一标识一个构建的统一规范。拥有了统一规范,就可以把查找工作交给机器.

🌈2.2 Maven坐标主要组成

groupId:定义当前Maven项目组织名称 artifactId:定义实际项目名称 version:定义当前项目的当前版本或者是所依赖的jar包的版本

 <groupId>com.jinhuan</groupId>  
 <artifactId>demoProject</artifactId> <version>0.0.1-SNAPSHOT</version>  
🌈2.3 定义Maven坐标
 每个Maven工程都需要定义本工程的坐标,坐标是Maven对jar包的身份定义。
 例如:定义一个入门程序的坐标
 <!--项目名称,定义为组织名+项目名,类似包名-->
 <groupId>com.kkb</groupId>
 <!-- 模块名称 -->
 <artifactId>my-first-Maven</artifactId>
 <!-- 当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本 --> <version>0.0.1-SNAPSHOT</version>
 <packaging >jar</packaging>
 <!--packaging 表示打包类型
   jar:执行package会打成jar包  
   war:执行package会打成war包
   pom :用于Maven工程的继承,通常父工程设置为pom  
 -->

🎯3 Maven的生命周期

🌈3.1 什么是生命周期

Maven生命周期就是为了对所有的构建过程进行抽象和统一。包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤。生命周期可以理解为构建工程的步骤。

🌈3.2Maven三大生命周期

Maven拥有三套相互独立的生命周期,分别是clean、default和site. clean Lifecycle: 在进行真正的构建之前进行一些清理工作。 mvn clean default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。 site Lifecycle: 生成项目报告,站点,发布站点。

🧣3.3.1 clean生命周期

clean的目的是清理项目。 每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有Clean生命周期,也有clean阶段。

包含3个阶段:

  1. pre-clean 执行一些清理前需要完成的工作
  2. clean 清理上一次构建过程中生成的文件,比如编译后的class文件等
  3. post-clean 执行一些清理后需要完成的工作
🧣3.3.2 default生命周期- 构建项目

所有生命周期中最核心的部分,绝大部分工作都发生在这个生命周期中。本文只介绍一些比较重要和常用的阶段:

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项目使用

注意:

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

🧣3.3.3site生命周期-生成项目站点

目的:建立和发布项目站点

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

关于maven的核心文件、坐标以及声明周期的讲解就到这里了,下一篇我们讲解如何使用Idea搭建Maven项目(使用骨架与不使用骨架)