初识Maven:Java项目管理工具

news2024/9/26 1:23:35

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

        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 都能够帮助提高开发效率,规范项目结构,确保项目构建过程的稳定性和可重复性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何获取MySQL数据表的列信息

在数据库管理中&#xff0c;了解表的结构是至关重要的。在MySQL中&#xff0c;我们可以通过几种方式来获取数据表的列信息。这不仅可以帮助我们更好地理解表的结构&#xff0c;还可以在编写查询时提供便利。以下是三种常用的方法来获取MySQL数据表的列信息。 使用 SHOW COLUMN…

HDMI彩条显示——FPGA学习笔记12

素材来自原子哥 一、HDMI简介 英文全称是High-Definition Multimedia Interface&#xff0c;即高清多媒体接口。 HDMI引脚解析&#xff08;A型&#xff09; HDMI工作连接图 HDMI工作原理 DVI编码输出示意图 二、TMDS编码&#xff08;最小化差分传输&#xff09; TMDS编码框图…

pip 阿里云镜像报错 certificate verify failed: unable to get local issuer certificate

在没有管理员身份&#xff0c;且有防火墙限制的电脑上&#xff0c;pip安装​python库包失败。​但是在普通的电脑上安装正常。​​报错内容如下&#xff1a; (SSS_web) C:\Users\HXAIYVQ>pip install flask -i https://mirrors.aliyun.com/pypi/simple/ Looking in indexes…

302.AI学术论文搜索工具的智能体验

Hey朋友们&#xff0c; 你是否曾在学术的海洋里迷失方向&#xff0c;为了找到一篇论文而苦苦挣扎&#xff1f; 就像在茫茫大海中寻找灯塔&#xff0c;我们渴望一盏明灯&#xff0c;指引我们前行。 别担心&#xff0c;今天我来给你介绍一个超级给力的工具——302.AI学术论文…

求教0基础入门大模型的学习路线?

0基础入门大模型&#xff0c;transformer、bert这些是要学的&#xff0c;但是你的第一口不一定从这里咬下去。真的没有必要一上来就把时间精力全部投入到复杂的理论、各种晦涩的数学公式还有编程语言上&#xff0c;这样不仅容易让你气馁&#xff0c;而且特别容易磨光热情。当我…

如何系统的入门大模型?

对于刚开始接触大模型&#xff08;LLM&#xff09;的研究者来说&#xff0c;系统地学习和探索是非常重要的。以下是一个循序渐进的学习路径&#xff0c;帮助你高效地入门大模型的领域。 1、浏览基础资源与课程 首先&#xff0c;你可以通过阅读几篇公众号或知乎上的文章来了解大…

动态数字时钟屏保 提升桌面美化 电脑屏幕屏保软件

时钟屏保软件可以让你的电脑更有特色&#xff0c;当你离开电脑时候&#xff0c;屏保可以保护你的桌面隐私&#xff0c;还是比较有用的一款小软件&#xff0c;今天小编给大家推荐的这款可以实现动态数字时钟的屏保软件&#xff1a;芝麻时钟 &#xff08;下载地址&#xff1a;htt…

终端显示字体背景和字体颜色

【终端显示字体背景和字体颜色等使用用法】 在命令行下想要产生五颜六色的字体和背景&#xff0c;只需要加上一些颜色代码即可。 ANSI 标准规定了一种所有终端共享的指令集&#xff0c;并要求用 ASCII 的数字字符传递所有数值信息&#xff0c;用于控制 Linux 终端上的光标位置…

抓包分析ARP协议工作原理

目录 1. ARP 协议 2. 工作原理 3. ARP 协议报文格式 4. ARP 缓存的查看和修改 5. tcpdump 抓包分析 ARP 协议工作原理 5.1 搭建 2 台虚拟机 5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听 5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.…

恢复二叉搜索树

题目 给你二叉搜索树的根节点 root &#xff0c;该树中的两个节点被错误地交换。请在不改变其结构的情况下&#xff0c;恢复这棵树。 进阶&#xff1a;使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗&#xff1f; 示例 1&#xff1a; 输入&…

超声眼镜波清洗机有用吗?真正好用的超声波清洗机推荐

随着时代的进步&#xff0c;人们对家居生活质量的追求也日益提高。尤其是对于珠宝、饰品、眼镜等小物件&#xff0c;长时间不使用后往往会积累灰尘和细菌&#xff0c;这些细菌隐藏在肉眼看不到的地方&#xff0c;它们对健康的影响不容忽视。幸运的是&#xff0c;超声波清洗机能…

Nginx怎么重新编译添加模块

转自 https://www.php.cn/faq/547300.html

【机器人建模和控制】读书笔记

机器人建模和控制——马克斯庞 A. x 1 0 x 1 ∙ x 0 x^0_1x_1\bullet x_0 x10​x1​∙x0​&#xff0c;其实就是&#xff1a; 1&#xff09; x 1 x_1 x1​轴向量在 O 0 O_0 O0​系下的坐标 2&#xff09;在 x 0 x_0 x0​轴上的投影 3&#xff09;坐标变换矩阵的 R 1 0 R_1…

基于vue框架的城市智慧地铁管理系统73c2d(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,站点查询,车次线路,站点周边 开题报告内容 基于Vue框架的城市智慧地铁管理系统开题报告 一、研究背景与意义 1.1 研究背景 随着城市化进程的加速和人口的不断增长&#xff0c;城市交通压力日益增大。地铁作为城市公共交通的重要…

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(一)

项目简介 随着生成式人工智能的兴起&#xff0c;传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求&#xff0c;今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight&#xff0c;利用生成式AI的能力来加速业务决策&#xff0c;从而提高业务生产…

设置广告活动目标和数字广告关键绩效指标的3个步骤

在微调广告预算、优化广告、分析数字广告关键绩效指标&#xff08;KPI&#xff09;和个性化着陆页面的同时&#xff0c;有一件事是在启动广告活动之前必须做的&#xff1a;确定哪些因素能使广告活动有效。 广告商很容易迷失在构成成功活动的各种指标中&#xff0c;但事实是&am…

20240912 每日AI必读资讯

OpenAI计划在接下来的两周内发布Strawberry - 独立产品&#xff1a;尽管草莓是ChatGPT的一部分&#xff0c;但它将作为一个独立的产品发布&#xff0c;具体如何提供尚不清楚。它可能会出现在用户选择的AI模型下拉菜单中&#xff0c;与现有服务有所不同。 - 推理功能&#xff…

红帽RHCE认证值不值得考?RHCE认证有什么用?

在IT行业&#xff0c;红帽认证作为一项衡量Linux技能水平的重要标准&#xff0c;受到了广泛的关注和认可。 拥有一张权威认证证书无疑是提升自身竞争力、实现职业发展的重要途径。 RHCE认证作为Linux领域的顶级认证之一&#xff0c;其价值和意义不言而喻。 那么&#xff0c;…

软件设计之JavaWeb(2)

软件设计之JavaWeb(2) 此篇应在MySQL之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷全新JavaWeb教程&#xff0c;企业主流javaweb技术栈 资料可以去尚硅谷官网免费领取 此章节最好学完JDBC观看 学习内容&#xff1a; HTTP简介…

《Learning to Prompt for Vision-Language Models》CoOp论文中文校对版

系列论文研读目录 文章目录 系列论文研读目录摘要1 简介2 相关工作2.1视觉语言模型2.2 NLP中的提示学习 3 方法论3.1视觉语言预训练3.2上下文优化3.3讨论 4 实验4.1少数学习4.2领域泛化4.3进一步分析 5 结论、局限性和未来的工作 摘要 像CLIP这样的大型预训练视觉语言模型在学…