”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 掌握 Maven:超越构建管理

掌握 Maven:超越构建管理

发布于2024-08-05
浏览:317

Mastering Maven: Beyond Build Management

Maven 被广泛认为是一个强大的构建自动化工具,但它的作用远不止于此。它是一个全面的项目管理工具,可以简化整个构建过程、依赖关系管理和文档生成。在这篇文章中,我们将探讨 Maven 的各个方面并详细了解其功能。

Maven 的主要特性
1.构建生成
2.依赖管理
3.文档

当您执行 mvn build 或 mvn deploy 等命令时,Maven 会查找包含所有配置的 pom.xml 文件,并采取相应的操作。让我们更深入地了解 pom.xml 结构及其意义。

POM 文件

``` 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">
4.0.0


com.example
my-app
1.0-SNAPSHOT
jar



    1.8
    1.8
    5.2.8.RELEASE




    
    
        org.springframework
        spring-core
        ${spring.version}
    
    
    
        org.springframework
        spring-context
        ${spring.version}
    
    
    
        junit
        junit
        4.12
        test
    




    
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.8.1
            
                ${maven.compiler.source}
                ${maven.compiler.target}
            
        
        
        
            org.apache.maven.plugins
            maven-surefire-plugin
            2.22.2
        
    




    
        central
        https://repo.maven.apache.org/maven2
    




    
        releases
        http://repo.mycompany.com/releases
    
    
        snapshots
        http://repo.mycompany.com/snapshots
    

让我们解码 POM 文件:

**pom.xml 的文件遵循特定的 XML 模式(在 xsi:schemaLocation: 中定义),确保它遵循 Maven 验证的正确结构。这是一个例子:






关键要素:

  • 父 POM:
    Spring Boot 中的每个 POM 文件都有一个父 POM。如果未定义父级,则超级 POM 将成为父级。

  • GroupId、ArtifactId 和版本:
    这些元素唯一标识 Maven Central 中的项目。


com.example
    my-app
    1.0-SNAPSHOT
    jar


  • 特性: 定义可在整个 pom.xml 中引用的键值对。


    1.8


-

  • 存储库: 指定下载依赖项的位置,通常从 Maven Central。


    
        central
        https://repo.maven.apache.org/maven2
    



依赖项:列出项目的依赖项。



    
        org.springframework.boot
        spring-boot-starter-web
        2.3.4.RELEASE
    



  • 构建配置: 定义构建过程和阶段。 为此我们需要了解maven的构建生命周期。

Maven 构建生命周期

Maven 遵循由几个阶段组成的特定构建生命周期:

  1. 证实:
    验证项目结构。

  2. 编译:
    将 Java 代码转换为字节码(.class 文件)并将其放置在 target/ 文件夹中。

  3. 测试:
    运行位于 test/ 目录中的测试用例。

  4. 包裹:
    从编译的字节码生成 JAR/WAR 文件并将它们存储在 target/ 文件夹中。

  5. 核实:
    检查包裹的完整性。

  6. 安装:
    在本地存储库中安装软件包。

  7. 部署:

    将包上传到远程存储库。

自定义构建过程:
Maven 提供了通过元素在每个阶段添加特定目标的灵活性。您还可以创建和使用插件来扩展 Maven 的功能。



    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.8.1
            
                1.8
                1.8
            
        
    




*使用maven安装:*[​​&&&] 完成测试、打包和验证后,它会安装我们在编译阶段创建的 jar 文件。
这里它创建了一个 m2 文件夹,其中保存了所有依赖项。我们可以从
下的 settings.xml 更改此文件夹位置

使用 Maven 部署 部署配置在元素内部指定。

内部.repo http://repo.mycompany.com/maven2 存储库> 分销管理>


    
        internal.repo
        http://repo.mycompany.com/maven2
    




提示:我们可以在 .m2/repository 文件夹内的 settings.xml 中提供凭据。

及时了解 Maven 并掌握其细微差别可以显着增强项目管理和构建自动化技能。请记住,Maven 不仅仅是一个构建工具,它还是项目的指挥中心。深入研究、探索新插件并不断尝试。我们与 Maven 的接触越多,我们的开发过程就会变得越强大。不断突破界限,让 Maven 处理剩下的事情 — 毕竟,这就像拥有一把瑞士军刀来满足您的项目管理需求!

非常感谢您的阅读,非常感谢您的宝贵反馈。

如果您遇到任何很酷的插件,请在评论中告诉我。
别忘了点赞、分享和订阅。

版本声明 本文转载于:https://dev.to/mini2809/mastering-maven-beyond-build-management-6fd?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在Java列表中有效计算元素的发生?
    如何在Java列表中有效计算元素的发生?
    计数列表中的元素出现在列表 中,在java编程中,列举列表中列举元素出现的任务来自列表。为此,收集框架提供了全面的工具套件。在这种情况下,Batocurrences变量将保持值3,代表动物列表中的“ BAT”出现的数量。 &&& [此方法是简单的,可以得出准确的结果,使其成为计算列表中元素出现的理...
    编程 发布于2025-02-06
  • 如何有效地更新实体框架5中的记录?
    如何有效地更新实体框架5中的记录?
    [2 优化实体框架5记录更新 实体框架5提供了几种更新数据库记录的方法。 该分析比较了三种常见方法,突出了它们的优势和缺点,以帮助您选择满足需求的最佳方法。 方法1:获取并更新单个属性 允许对修改哪些属性进行精确控制。 属性排除:对于某些属性(如密码)不应通过此方法直接更新的方案。 多个查询:需要...
    编程 发布于2025-02-06
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在java中的多个返回类型:一个误解介绍,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但是,情况确实如此吗?通用方法:拆开神秘 [方法仅具有单一的返回类型。相反,它采用机制,如钻石符号“ ”。分解方法签名: :本节定义了一个通用类型参数,E。它表示该方法接受了扩展foo类的任...
    编程 发布于2025-02-06
  • 我可以在CSS中使用SVG作为伪元素吗?
    我可以在CSS中使用SVG作为伪元素吗?
    使用svgs用作pseudo-element content css content properts允许在使用元素之前或之后使用元素插入各种类型的内容伪元素,例如::之前和::之后。但是,对可以包括哪些内容有限制。可以将svgs用作pseudo-element Content?,现在可以使用s...
    编程 发布于2025-02-06
  • 在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在ubuntu 使用debconf-set-selections sudo debconf-set-selections
    编程 发布于2025-02-06
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-02-06
  • 如何从PHP服务器发送文件?
    如何从PHP服务器发送文件?
    将文件发送到user
    编程 发布于2025-02-06
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 // error:“ coss redeclare foo()” 但是,php工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地...
    编程 发布于2025-02-06
  • 您什么时候需要取消多层指针?
    您什么时候需要取消多层指针?
    使用多个级别的指针是有道理的: 在面向对象的编程上下文中,可以使用三重指针来表示复杂的指针层次结构。例如,考虑以下C类结构:类A { 民众: char *b; }; B级{ 民众: char *c; }; 在这里,A对象包含一个指向B对象的指针,而B对象包含指向char的指针。要从...
    编程 发布于2025-02-06
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    Exploiting Regular ExpressionsA more efficient solution involves leveraging regular expressions.正则表达式允许您定义复杂的搜索模式并在单个操作中执行文本转换。示例示例usage 接下来,您可以使用匹配器...
    编程 发布于2025-02-06
  • 为什么我的nvarchar(最大)值将SQL Server 2005中的4000个字符截断为4000个字符?
    为什么我的nvarchar(最大)值将SQL Server 2005中的4000个字符截断为4000个字符?
    convenation crocess 在提供的代码中,字符串是通过对一系列常量和一系列常数和一系列常数和变量均小于4000个字符。在被分配到 @sql1之前,串联的字符串仍被视为较小字符串的集合。 数据类型preceDence [&& && &&&&&&&&&&&&&&&&&&&&&&&...
    编程 发布于2025-02-06
  • 为什么在JDBC Connections中使用class.forname(“ oracle.jdbc.oracledriver”)?
    为什么在JDBC Connections中使用class.forname(“ oracle.jdbc.oracledriver”)?
    class.forname(“ oracle.jdbc.driver.oracledriver”)在jdbc connections中的目的是什么?使用Java,class.forname(“ oracle.jdbc.driver.oracledriver”)命令扮演至关重要的角色。 的目的是确...
    编程 发布于2025-02-06
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2025-02-06
  • 在网络开发中保持领先地位:最新新闻,工具和见解#49
    在网络开发中保持领先地位:最新新闻,工具和见解#49
    ?阅读! 创始人模式:一般假设:一家初创公司的管理正在向经理模式变化 - 经理模式 - 在商学院管理和教授的众所周知的方式。 Founder mode is less known and understood, but may be more effective. / start...
    编程 发布于2025-02-06
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    在尝试将image存储在mysql数据库中时,您可能会遇到一个可能会遇到问题。本指南将提供成功存储您的图像数据的解决方案。 easudy values('$ this-> image_id','file_get_contents($ tmp_image)...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3