Maven第二章:Maven基本概念与生命周期

这篇具有很好参考价值的文章主要介绍了Maven第二章:Maven基本概念与生命周期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Maven第二章:Maven基本概念与生命周期

前言

本章主要内容,介绍Maven基本概念,包括maven坐标含义,命名规则,继承与聚合、了解与理解生命周期,如何通过Maven进行依赖和版本管理。

什么是Maven的坐标?

Maven坐标是一种标识Maven项目的信息,它包含了项目的唯一标识符和项目的版本号等信息。Maven坐标的作用是唯一地定位一个Maven项目,使得在不同的环境中可以正确地找到和解析该项目。

Maven坐标的含义与作用
  1. groupId:表示项目的组织域名,通常是企业或组织的反向域名,用于区分不同的组织。groupId是Maven坐标中的一个必需元素。

  2. artifactId:表示项目的实际名称,通常是一个简单的单词或短语,用于区分不同的项目。artifactId是Maven坐标中的一个必需元素。

  3. version:表示项目的版本号,用于区分同一项目中的不同版本。version是Maven坐标中的一个可选元素,但通常对于每个项目都需要指定一个版本号。

Maven坐标命名规范
  1. groupId:定义当前Maven项目隶属的实际项目。通常,如果项目属于某个公司或组织,groupId就应该使用该组织或公司的域名。对于一个公司来说,不同的项目可能会有不同的groupId,但通常同一个项目中的所有模块都会使用相同的groupId。

  2. artifactId:该元素定义实际项目中的一个Maven项目(模块)。推荐格式是:使用实际项目名称作为artifactId的前缀,紧接着为模块名称。例如:nexus-indexer、spring-mvc、hibernate-c3po等。

  3. version:该元素定义了Maven项目当前所处的版本。在打包方式(packaging)为jar的情况下,Maven生成的构件的文件名会以artifactId作为开头,接着中划线,然后是版本信息。例如:nexus-indexer-2.0.0.jar。

Maven如何管理依赖
  1. 在项目的POM文件中,使用元素来定义依赖项列表,每个依赖项使用元素来指定其groupId、artifactId和version等信息。

  2. 在其他项目中引用依赖项时,只需要指定该依赖项的groupId、artifactId和version等信息,Maven就会根据这些坐标信息自动解析出该依赖项的正确版本,并将其添加到项目的构建路径中。

  3. Maven仓库:Maven仓库是一种用于存储和管理Maven依赖项的集中式存储库。通过使用Maven仓库,可以将依赖项的坐标信息与具体的项目分离,使得不同的项目之间可以共享相同的依赖项。

  4. 在项目的POM文件中,使用元素来定义可用的Maven仓库列表,每个仓库使用元素来指定其id、url等信息。通过指定多个仓库,可以覆盖默认的中央仓库,从而获取到更多的依赖项和版本选择。

Maven如何版本管理
  • maven 作为标准的Java项目结构目录
  1. Maven作为标准的Java项目结构目录,约定了一套统一的目录结构,使得项目的目录结构规范化。在通过Maven创建项目后,项目的目录结构会以这套目录结构作为模板创建。

  2. 这套默认的目录结构包括以下几个主要目录:

    • ${basedir}:项目的根目录,其中包含pom.xml文件和项目的子目录结构。
    • src/main/java:项目的源代码所在的目录。
    • src/main/resources:项目的资源文件所在的目录。
    • src/main/filters:项目的资源过滤文件所在的目录。
    • src/test/java:测试代码所在的目录。
    • src/test/resources:测试相关的资源文件所在的目录。
    • src/test/filters:测试相关的资源过滤文件所在的目录。
  3. 其中,src/main/webapp是web项目的特有目录,用于存放web应用源代码,如html文件和web.xml等。

  4. 使用Maven作为标准的Java项目结构目录,可以使得不同IDE中创建的项目目录结构保持一致,有利于代码的管理和维护。同时,Maven的插件机制和一致的构建模型也使得项目的构建过程更加规范化和一致化,提高了项目的可维护性和可扩展性。

  • Maven的版本管理主要有以下特点
  1. 依赖管理系统:Maven为Java世界引入了一个新的依赖管理系统。在Java世界中,可以用groupid、artifactid和version组成的坐标(Coordinate)唯一标识一个依赖。任何基于Maven构建的项目自身也必须定义这三项属性,生成的包可以是jar包,也可以是war包或者ear包。当jar包升级时,只需要修改配置文件即可。
  2. 多模块构建:Maven中的多模块构建可以将一个项目分解为多个模块,方便代码的管理和维护。在parent POM中可以通过标签来定义一组子模块,parent POM中的build配置以及依赖配置都会自动继承给子module。
  3. 一致的项目构建:Maven在设计之初的理念就是约定大于配置(Convention over Configuration),其制定了一套项目目录结构作为标准的Java项目结构,解决了不同IDE带来的文件目录不一致问题。使用Maven后,无论在IntelliJ IDEA、Eclipse还是其他IDE中创建的项目,目录结构都是一样的。
  4. 一致的构建模型和插件机制:Maven使用了一致的构建模型和插件机制,使得项目的构建过程和工具具有一致性。当需要使用不同的工具或者服务器时,只需要将相应的插件引入到pom.xml文件中即可。
Maven的继承和聚合

Maven的继承:在Maven中,可以通过继承来共享父POM的配置。子POM可以继承父POM中的配置,包括打包类型、依赖、插件等。

Maven的继承基本步骤

  1. 创建一个父POM,定义所有子模块共用的配置。在父POM的pom.xml文件中,可以定义打包类型、依赖、插件等。
  2. 创建子POM,使用标签继承父POM。在子POM的pom.xml文件中,添加标签,并指定父POM的groupid、artifactid和version。这样,子POM就可以继承父POM的配置了。
  3. 在子POM中添加自己的配置。子POM可以在标签下面添加自己的配置,如依赖、插件等。这些配置将和父POM的配置一起被继承到子模块中。
  4. 使用依赖管理元素()来统一管理依赖。可以在父POM中使用元素来管理所有子模块的依赖。子模块只需要指定依赖的groupid和artifactid,而不需要指定具体的版本号。这样,子模块就可以自动继承父POM中定义的依赖版本号。

以下是一个关于Maven继承的示例:

<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.example</groupId>  
  <artifactId>parent-pom</artifactId>  
  <version>1.0</version>  
  <packaging>pom</packaging>  
  <dependencies>  
    <dependency>  
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>4.12</version>  
      <scope>test</scope>  
    </dependency>  
  </dependencies>  
  <build>  
    <plugins>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId>  
        <version>3.8.1</version>  
        <configuration>  
          <source>1.8</source>  
          <target>1.8</target>  
        </configuration>  
      </plugin>  
    </plugins>  
  </build>  
</project>

现在,我们创建一个子POM,名为child-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/maven-v4_0_0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <parent>  
    <groupId>com.example</groupId>  
    <artifactId>parent-pom</artifactId>  
    <version>1.0</version>  
  </parent>  
  <artifactId>child-pom</artifactId>  
  <dependencies>  
    <dependency>  
      <groupId>com.google.guava</groupId>  
      <artifactId>guava</artifactId>  
      <version>28.2-jre</version>  
    </dependency>  
  </dependencies>  
  <build>  
    <plugins>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-jar-plugin</artifactId>  
        <version>3.2.0</version>  
        <configuration>  
          <archive>  
            <manifestEntries>  
              <Class-Path>.</Class-Path>  
            </manifestEntries>  
          </archive>  
        </configuration>  
      </plugin>  
    </plugins>  
  </build>  
</project>

Maven的继承注意事项

  1. 首先,当您创建一个子POM并使用``元素继承父POM时,子POM将继承父POM中定义的所有配置。这包括依赖项、插件、构建配置等。子POM可以选择性地覆盖这些配置,或者根据需要添加更多的配置。

  2. 其次,Maven的继承是单向的,即父POM不能继承子POM的配置。父POM只能向下传递配置给子POM,而不能向上传递配置给父POM。

  3. 最后使用继承时,需要注意以下几点:

    • 确保父POM的配置是可重用的,并且可以在多个子POM中共享。如果父POM的配置是特定于项目的,或者只在一个子POM中使用,那么最好不要将其定义为父POM。

    • 在子POM中,您可以使用<dependencyManagement>标签来管理依赖项的版本。这将允许您在子POM中指定依赖项的版本,而不需要在父POM中定义该版本。

    • 如果您需要在多个项目之间重用构建逻辑,可以考虑使用Maven的聚合功能。聚合允许您创建一个父POM,并在其中定义一个或多个子项目。每个子项目可以有自己的构建配置,同时也可以继承父POM的配置。通过这种方式,您可以在多个项目之间重用构建逻辑。

Maven的Archetype插件

使用Maven的Archetype插件可以快速生成项目的基础结构和文件,以下是如何使用Archetype插件的步骤:

  1. 安装Maven Archetype插件:首先,确保你的Maven环境已经配置好,并且你已经安装了Archetype插件。你可以通过在命令行中输入以下命令来安装Archetype插件:
 mvn install
  1. 选择一个Archetype:Archetype插件有很多种,包括用于不同类型的项目(如Web应用程序、Spring应用程序等)。你可以通过运行以下命令查看所有可用的Archetype插件:
 mvn archetype:list
  1. 生成项目:一旦你选择了一个Archetype,你可以使用以下命令生成项目:
 mvn archetype:generate <archetype-groupId> <archetype-artifactId> <archetype-version>

你需要替换上述命令中的 和 `` 为你选择的Archetype的groupId、artifactId和版本号。

  1. 配置项目:一旦项目生成,你需要在 src/main/resources/archetype-resources 目录下进行一些配置。这可能包括修改 pom.xml 文件、添加或修改配置文件等。

  2. 构建和测试项目:完成配置后,你可以使用以下命令构建和测试你的项目:

 mvn clean install
  1. 查看生成的代码:生成的代码将会在项目的 target 目录下。你可以直接在该目录下查看生成的代码。

Maven的Archetype插件生成Spring Boot项目的示例:

  1. 确保已经安装了Maven和Java。你可以在命令行中输入mvn -vjava -version来检查它们的版本。
  2. 打开命令行,然后输入以下命令以生成Spring Boot项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

其中,groupId是你的项目的组织唯一标识符,通常是你的公司或组织的域名,反方向加上项目的名称;artifactId是你的项目的唯一标识符,通常是你项目的名称;archetypeArtifactId指定了生成项目的模板,maven-archetype-quickstart会生成一个基础的Java项目,而spring-boot-archetype会生成一个Spring Boot项目。

  1. 进入到项目的目录中:
cd my-app
  1. 运行项目:

如果你使用的是Spring Boot 2.x,则使用以下命令:

mvn spring-boot:run

如果你使用的是Spring Boot 1.x,则使用以下命令:

mvn spring-boot:start
  1. 等待项目启动。一旦项目启动成功,你就可以在浏览器中访问你的应用程序了。默认情况下,Spring Boot应用程序在端口8080上运行。你可以在浏览器中输入localhost:8080来访问你的应用程序。

  2. 在你的项目中,你可以根据你的需求添加更多的Maven依赖项和配置文件。你可以在项目的根目录下找到pom.xml文件,它包含了Maven的配置信息。你可以在这个文件中添加更多的依赖项和插件。

Maven第二章:Maven基本概念与生命周期,maven,java文章来源地址https://www.toymoban.com/news/detail-724372.html

到了这里,关于Maven第二章:Maven基本概念与生命周期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二章VHDL基本知识

    2.1.1 空白符b,t 2.1.2注释符 单行注释:// 多行注释:/*    8/ 2.1.3标识符 字母,数字,符号,下划线,区分大小写,第一个字符必须是字母或者下划线 2.1.3转移标识符 以开头,以空白结尾, 2.1.4 用来VHDL内部使用的词叫,所有的都是小写 2.1.5数值 0  低电

    2024年02月06日
    浏览(61)
  • Maven(3)---Maven插件和生命周期

    在前两篇博客中,我们已经了解了Maven的基础知识、安装配置和依赖管理。本篇博客将重点介绍Maven的插件和生命周期,它们是Maven的核心特性之一。 Maven插件是用于扩展和增强Maven的功能的工具。插件可以执行各种任务,如编译、测试、打包、部署等。Maven插件基于插件目标(

    2024年02月05日
    浏览(36)
  • 【Maven三】——maven生命周期和插件

    Maven之POM介绍 maven命令上传jar包到nexus 【Maven二】——maven仓库 由于在具体项目开发过程中对于maven的理解和掌握处于基本运用的阶段,了解maven过于片面,所以本篇博客是博主学习《maven实战》书籍之后对maven生命周期和插件的总结,绝大多数内容源于《maven》实战这本书籍。

    2024年02月16日
    浏览(35)
  • C++第二章:变量和基本内置类型

    C++定义了一套包括算数类型和空类型在内的基本数据类型。 其中算数类型包含了字符、整形数、布尔值、浮点数。空类型不对应具体的值,仅用于一些特殊的场合,例如最常见的是:当一个函数不返回任何值时使用空类型作为返回类型。 算数类型分为两种:整形(包括字符和

    2024年02月06日
    浏览(41)
  • 【第二章 selenium基本操作之元素】

    第一章 【初识selenium自动化测试框架(详细记录)】 1). F12 进入开发调试工具(DevTools) 2). 选择图中红圈的箭头(select element),则鼠标放到相应元素上可看获取到信息,例如属性与内容等 或者右键点击某个元素,选择 检查 规范性的网站一般id是唯一的(在html中是 标记

    2024年02月08日
    浏览(47)
  • 计算机网络重点概念整理-第二章 物理层【期末复习|考研复习】

    计算机网络复习系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称缩写 给大家整理了一下计算机网络中的重点概念,以供大家期末复习和考研复习的时候使用。 参

    2024年02月08日
    浏览(40)
  • 计算机操作系统重点概念整理-第二章 进程管理【期末复习|考研复习】

    计算机操作系统复习系列文章传送门: 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 给大家整理了一下计算机操作系统中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算

    2024年02月08日
    浏览(54)
  • Maven-生命周期及命令

    ✍写作原因 之前在学校学习的时候,编写代码使用的项目都是单体架构,导入开源框架依赖时只需要在pom.xml里面添加依赖,点一下reload按钮即可解决大部分需求;但是在公司使用了dubbo微服务架构之后发现只知道使用reload不足以胜任工作需求。  🎯写作目的 了解maven地生命

    2024年02月14日
    浏览(40)
  • Maven 项目构建生命周期

    😀前言 在现代软件开发中,构建和管理项目成为了一个核心环节。Apache Maven 不仅仅是一个便捷的项目构建工具,它还提供了一个全面的框架来理解和掌控软件项目的构建过程。通过定义明确的构建生命周期和灵活的插件机制,它极大地简化了构建和项目管理过程。在本篇文

    2024年02月15日
    浏览(38)
  • 第二章 Flink集成Iceberg的集成方式及基本SQL使用

    注意事项:一般都是用基于Flink的Hive Catalog,使用HMS存储表模型数据 1、集成方式 (1)下载jar包 下载地址 (2)启动FlinkSQL ①StandLone模式启动 ②Flink On Yarn模式启动 2、基本使用 2.1、创建catalog 核心:可创建hive、hadoop、自定义等目录,创建模板如下 type : 必须的 iceberg 。(必需

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包