初识Maven:Java项目管理工具

        实际开发中,伴随着项目规模的增长,依赖管理和构建自动化变得至关重要,一套标准化的项目结构有助于更好的开发项目、简化这项任务(真的不是强迫症)

        Maven,作为 Apache Software Foundation 维护的项目管理工具,帮助开发者简化这些任务。不论是依赖管理、项目构建,还是项目生命周期的管理,Maven 都可以轻松应对。

        本文将深入探讨 Maven 的基础概念、核心功能以及如何在你的 Java 项目中使用它。

什么是Maven

  • Maven是专门用于管理和构建Java项目的工具,他的主要功能有:

        1. 提供了一套标准化的项目结构

        所有的IDE使用Maven都可以构建出统一目录结构的项目。

        2. 提供了一套标准化的构建流程 

        在一两个文件的时候觉得还可以,但是在整个大型web项目的时候,根本不可能一个个去搞,Maven提供了一套标准化的构建流程,可以一键打包,非常简单方便。

        3. 提供了一套依赖管理机制

        依赖管理,用python的方式就是导包,Maven在管理依赖的时候直接在xml文件中导入就可以了~

Maven模型

1. POM(Project Object Model)文件

        POM 文件是 Maven 项目的核心配置文件,位于项目根目录中。通过 pom.xml 文件,开发者可以定义项目的依赖、插件、构建配置等。

        一个简单的 pom.xml 文件示例如下

<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>my-project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- 引入依赖项 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.5.4</version>
        </dependency>
    </dependencies>
</project>

2. 依赖管理

        Maven 会从远程中央仓库或私有仓库中自动下载项目所需的依赖。这一功能极大地简化了开发者手动管理依赖的过程。当你在 pom.xml 中定义了依赖项后,Maven 会自动处理依赖之间的关系,确保版本兼容性和库的完整性。

        仓库:依赖的来源,主要有以下三种:本地仓库(本机的)、中央仓库(官方的)、远程仓库(私服,公司的)

3. 构建生命周期

Maven 的构建生命周期分为若干个阶段,常见的有以下几个:     

  • alidate:验证项目是否正确配置。
  • compile:编译源代码。
  • test:运行测试代码。
  • package:将编译好的代码打包成 JAR 或 WAR 文件。
  • install:将包安装到本地仓库。
  • deploy:将包发布到远程仓库中

4. 插件机制

        Maven 的强大功能依赖于插件体系。每个生命周期阶段实际上是通过相应的插件来执行的。例如,编译源代码的 maven-compiler-plugin,打包 JAR 文件的 maven-jar-plugin,都属于 Maven 插件。

        我们可以通过在 pom.xml 文件中配置插件来定制项目的构建流程:

<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>

如何在项目中使用Maven

1. 安装Maven

        mac版安装非常简单,这里推荐大家去使用Homebrew下载,直接使用如下代码,可以一键安装并且配置好环境变量:

brew install maven

         在终端中运行 mvn -v 命令,确保 Maven 安装成功并且可以正常运行:

Homebrew安装的应用有时会帮忙配置,但有时候不会,不行的时候就去bash或者zsh文件中添加Maven的bin目录作为环境变量就可以了。

         win版本的也差不多,去官方网站下载Maven,将他的bin目录添加到系统环境变量就可以了。

        在配置完环境变量后,可以选择添加远程仓库和个人仓库,在安装Maven的目录下bin中的conf中的setting.xml文件中,找到<localRepository>和<mirrors>标签,添加个人仓库和远程仓库就可以了,这里以阿里云为例:

<localRepository>/maven/3.9.9/maven_resp</localRepository>

  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>

2. 创建一个Maven项目

        这里以IDEA举例,在设置中炸到到Maven的配置位置,在Maven home path中选择自己之前安装的Maven的bin目录,下面的setting file设置为bin下面的conf中的setting.xml文件,即可配置成功。

        此时在初始界面创建一个Maven的项目,成功创建项目后,文件目录和前面展示的一样即可。

        之后,在Configurations界面中添加Maven指令,选择需要的命令,这里以install为例子,保存后便可以运行打包了。

          运行情况如下:

 3. 如何下载导入依赖

        前面提到过,通过在 pom.xml 文件中配置依赖,Maven 能够自动从中央仓库下载所需的库并导入到你的项目中。

        在 Maven 中,所有依赖都是通过 pom.xml 文件进行管理的。每个依赖项都有三个主要属性:

        1. groupId:库所属的组(通常是反向域名)。

        2. artifactId:项目的唯一标识。

        3. version:你所需要的版本号。

举个例子,假设你想导入 Spring Boot 框架中的 spring-boot-starter 依赖,步骤如下:

        1. 打开项目根目录下的 pom.xml 文件。

        2. 在 <dependencies> 标签内添加如下配置:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>2.5.4</version>
    </dependency>
</dependencies>

     这个配置表示你想引入 Spring Boot 的 spring-boot-starter 库,版本号为 2.5.4,此时如果maven检测个人仓库中没有库,就会自动从远程仓库或中央仓库下载。

总结     

        Maven 是 Java 生态中不可或缺的项目管理工具。它简化了项目的依赖管理和构建流程,使得开发者可以专注于代码本身而无需担心构建细节。通过 pom.xml 文件,我们可以轻松配置项目所需的依赖和构建逻辑,利用 Maven 的插件扩展,还可以进行测试、打包、部署等操作,便于项目迭代开发。

        无论是个人项目还是团队协作,Maven 都能够帮助提高开发效率,规范项目结构,确保项目构建过程的稳定性和可重复性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/874537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity面经】性能优化篇

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 专栏交流&#x1f9e7;&…

SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出

文章目录 1. 简介依赖管理2. 实战案例2.1 基本用法2.2 结合Logback日志记录到文件2.3 自定义核心类Logbook2.4 自定义日志输出Sink2.5 与RestTemplate集成1. 简介 记录HTTP API请求响应日志对于监控、调试和性能优化至关重要。它帮助开发者追踪API的使用情况,包括请求来源、参…

2010-2022年各省乡村振兴新质生产力相关变量数据(40+指标)

2010-2022年各省乡村振兴新质生产力相关变量数据&#xff08;40指标&#xff09; 1、时间&#xff1a;2010-2022年 2、来源&#xff1a;统计年鉴、能源统计年鉴、农村统计年鉴、人口和就业统计年鉴、城乡建设统计年鉴以及各省份统计年鉴 3、指标&#xff1a;省份、年份、分地…

洗袜子的小洗衣机哪款好?专洗袜子的微型洗衣机!洗衣机不要乱选

袜子洗衣机大多数都为迷你洗衣机&#xff0c;因为这是解决了用大洗衣机去洗袜子而大材小用的情况&#xff0c;同时袜子清洗的数量比较少&#xff08;满打满算一周的袜子5双&#xff0c;用迷你洗衣机清洗是绰绰有余的&#xff09;而现在也很多人为了洗袜子专门买一个迷你洗衣机&…

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 大语言模型已被广泛采用&#xff0c;但推理时需要大量的GPU内…

【Hadoop|MapReduce篇】MapReduce概述

1. MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 2. Map…

丹尼尔·T·琼斯:为什么精益管理是卓越的商业模式?

作者&#xff1a;丹尼尔T琼斯 原文&#xff1a;Why Lean Remains a Superior Business Model and Way of Thinking - Lean Enterprise Institute 精益商业模式提供了一种不同于传统思维的选择&#xff0c;帮助企业在满足客户需求方面超越竞争对手&#xff0c;从而获得竞争优势…

安卓玩机工具-----ADB方式的刷机玩机工具“秋之盒”’ 测试各项功能预览

秋之盒 安卓玩机工具-秋之盒是一款ADB刷机工具箱&#xff0c;基于谷歌ADB的一款绿色安装&#xff0c;具备了海量扩展模块,支持ADB刷机救砖、一键激活黑域、adb指令修复等功能&#xff0c;是一款开源、免费、易用的手机刷机工具&#xff01; 并且是一款开源、免费、易用的图形化…

【每日刷题】Day118

【每日刷题】Day118 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09; 2. 188. 买卖股票的最佳时…

Ai+若依(集成easyexcel实现excel表格增强)

EasyExcel 介绍 官方地址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一…

运维问题0002:SAP多模块问题-SAP系统程序在执行时,跳出“加急快件”窗口,提示:快件文档“更新已终止”从作者***收到

1、问题描述 近期收到2起业务报障&#xff0c;均反馈在SAP执行程序时&#xff0c;弹出“加急快件”窗口&#xff0c;导致操作的业务实际没有更新完成。 1&#xff09;业务场景一&#xff1a;设备管理部门在操作事务代码&#xff1a;AS02进行资产信息变更时&#xff0c;保存正常…

当代打工人学会AI绘画之后,到底可以做什么?

Lofi Girl&#xff0c;一个油管拥有1,400万粉丝的虚拟博主&#xff0c;她的直播视频一般是柔和的背景音乐加上简单的循环动画&#xff0c;这样一个陪着你一起学习的虚拟女孩卡通频道&#xff0c;已经成为了全球无数网友的“精神伴侣”。 但你可能想象不到&#xff0c;就这样的一…

大模型算法岗,面试百问百答,7天3个offer拿到手!

导读 大模型时代很多企业都在开发自己的大模型&#xff0c;这直接刺激了大模型岗位的需求。本文为大家整理了大模型面试相关的知识点&#xff0c;希望对大家面试求职有所帮助。 今天分享大模型面试相关知识点&#xff0c;持续更新。 1. RAG技术体系的总体思路 数据预处理->…

Tube Qualify三维弯管测量系统用于弯管机修正弯管回弹参数

无论是汽车管路&#xff0c;还是航空管路&#xff0c;在采用弯管机弯曲成型时&#xff0c;金属材料受力变形&#xff0c;弯曲成品。当外力撤消后&#xff0c;管路会受到应力回弹&#xff0c;实测管路弯曲角度比所需弯曲的角度小。 弯曲不同的材料、不同的直径、不同的弯曲半径…

开源网安斩获CCIA中国网络安全创新创业大赛总决赛三等奖

近日&#xff0c;由中央网信办指导&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;主办的2024年中国网络安全创新创业大赛总决赛及颁奖典礼在国家网络安全宣传周落下帷幕。开源网安“AI代码审核平台CodeSec V4.0” 凭借在AI方向的技术创新、技术突破及功能应用创…

嵌入式系统------ARM

目录 一.c语言回顾 1.特殊符号 &#xff08;1&#xff09;const &#xff08;2&#xff09;static &#xff08;3&#xff09;extern 2.内存的结构 &#xff08;1&#xff09;kernel&#xff1a;内核 &#xff08;2&#xff09;栈区 &#xff08;3&#xff09;堆区 &#xff08…

名城优企游学活动之走进万事利:巴黎奥运文创合作伙伴数字化之路

近日&#xff0c;由纷享销客主办的“数字中国 高效增长——名城优企游学系列活动之走进万事利”成功举办&#xff0c;此次活动众多业内精英齐聚万事利科创中心&#xff0c;领略万事利的数字化转型之道&#xff0c;共同探讨如何运用先进数字化手段&#xff0c;实现企业的持续增长…

Java 入门指南:Java 并发编程 —— 同步工具类 Semephore(信号量)

文章目录 同步工具类Semephore核心功能限制并发访问量公平与非公平策略灵活性与适应性 常用方法使用示例 同步工具类 JUC&#xff08;Java.util.concurrent&#xff09;是 Java 提供的用于并发编程的工具类库&#xff0c;其中包含了一些通信工具类&#xff0c;用于在多个线程之…

游戏开发| Unreal5.2-5.4接入chatGPT定制游戏NPC

引擎版本UE5.2 (也支持到5.4,有试用其它插件所以选择之前版本) 使用插件(免费) 1.VArest (插件官方介绍:Plugin that makes REST communications much easier.)可以让REST(Representational State Transfer)通信变得更加容易,涉及客户端与服务器之间通过 HTTP 协议…

万亿低空经济火爆,无人机飞手培训正当时

低空经济是一种新兴的经济形态&#xff0c;主要依托于低空空域&#xff08;通常指垂直高度1000米以下&#xff0c;根据不同地区特点和实际需要可延伸至3000米以内的空域&#xff09;进行各种有人驾驶和无人驾驶航空器的飞行活动。 一、低空经济的蓬勃发展 近年来&#xff0c;…