Maven 构建过程

Maven 配置总结

生动概括

想象你正在建造一座房子。Maven 就像你的项目经理,它帮你安排好所有的材料、工人和施工计划。你只需要告诉它房子的设计图(POM 文件),它就会自动为你准备好所有的建材(依赖),组织好施工队伍(插件),并按照计划(构建生命周期)一步步完成房子的建造。Maven 的存在让你的工作更加轻松、高效,而且你可以专注于设计和创新,而不必担心施工中的各种细节问题。

详细介绍

1. 简介

Maven 的核心功能是通过层层管理的 POM 文件来管理整个项目的配置。这包括项目的基本信息、依赖库和插件等。此外,Maven 还负责项目的构建过程,涵盖了依赖下载、清理、编译、测试、打包和安装等步骤。

  • 项目基本信息:POM 文件包含了项目的基本信息,例如项目名称、版本、开发者信息等。
  • 依赖管理:POM 文件定义了项目所依赖的库,这样 Maven 可以自动下载和管理这些依赖,确保项目的构建环境一致。
  • 插件管理:Maven 使用插件来执行各种构建任务,例如编译、测试、打包等。POM 文件中也可以定义和配置这些插件。
  • 构建过程:Maven 提供了一套标准的构建生命周期,包括以下步骤:
    • clean:清理生成的文件。
    • validate:验证项目是否正确,所有必要信息是否可用。
    • compile:编译源代码。
    • test:使用单元测试框架运行测试。
    • package:将编译好的代码打包成可分发的格式,如 JAR 或 WAR。
    • verify:运行任何检查来验证包的有效性和质量。
    • install:将包安装到本地仓库,以供本地项目使用。
    • deploy:将最终的包复制到远程仓库,以供共享使用。

总的来说,Maven 提供了一种自动化的方式来管理和构建项目,使得开发过程更加高效和一致。

2. Maven 基础
  • POM 文件:这是 Maven 项目的核心配置文件,定义项目的基本信息、依赖和插件。
  • 依赖管理:Maven 会自动下载和管理项目所需的库,从而避免手动管理依赖的麻烦。
  • 构建生命周期:Maven 将构建过程分为多个阶段,包括清理、编译、测试、打包、安装和部署。
3. POM 文件结构

POM 文件(pom.xml)是 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">

    <!-- Maven 模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    
    <!-- 项目基础信息 -->
    <!-- 组织标识(例如公司或项目组) -->
    <groupId>com.example</groupId>
    <!-- 项目标识 -->
    <artifactId>my-app</artifactId>
    <!-- 项目版本号 -->
    <version>1.0-SNAPSHOT</version>

    <!-- 依赖管理 -->
    <dependencies>
        <!-- 项目依赖的库 -->
        <dependency>
            <!-- 依赖库的组织标识 -->
            <groupId>junit</groupId>
            <!-- 依赖库的标识 -->
            <artifactId>junit</artifactId>
            <!-- 依赖库的版本 -->
            <version>4.12</version>
            <!-- 依赖的作用范围,例如 test 表示仅在测试时使用 -->
            <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>
4. 依赖管理

在 POM 文件中添加依赖是非常简单的。依赖管理部分通常位于 <dependencies> 标签内。以下是一个示例:

<dependencies>
    <!-- 项目依赖的库 -->
    <dependency>
        <!-- 依赖库的组织标识 -->
        <groupId>org.springframework</groupId>
        <!-- 依赖库的标识 -->
        <artifactId>spring-core</artifactId>
        <!-- 依赖库的版本 -->
        <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>
</dependencies>
5. 多模块项目

将大型项目拆分成多个模块,每个模块有自己的 POM 文件,顶层 POM 文件统一管理。例如,假设有一个父项目和两个子模块:

my-multi-module-project
│   pom.xml  (顶层 POM 文件)
│
└───module1
│   │   pom.xml  (子模块1的 POM 文件)
│
└───module2
    │   pom.xml  (子模块2的 POM 文件)
6. 构建命令

在顶层项目目录运行以下命令,一次性构建和安装所有模块:

mvn clean install

此命令将执行清理、编译、测试、打包和安装所有模块的过程。

示例项目结构

顶层 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">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.example</groupId>
    <artifactId>my-multi-module-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>module1</module>
        <module>module2</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.9.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.9.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

这个顶层 POM 文件包含了项目的模块和依赖管理。每个子模块的 POM 文件可以继承顶层 POM 文件的配置。


                

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

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

相关文章

二次搭建无人车平台遇到的问题(mid360+joy游戏手柄操纵无人车)

joy节点启动 报错&#xff1a; ROS path [0]/opt/ros/noetic/share/ros ROS path [1]/home/jetson/yahboomcar_ws/src/yahboomcar_autodrive ROS path [2]/home/jetson/yahboomcar_ws/src/yahboomcar_bringup ROS path [3]/home/jetson/yahboomcar_ws/src/yahboomcar_ctrl ROS…

【2024版】Microsoft Azure 管理员培训课程招生简章(8月有开班)

课程介绍 本课程专为希望深入了解和精通Microsoft Azure管理的IT专业人员设计。在为期三天的培训中&#xff0c;学员将全面学习如何管理Azure订阅&#xff0c;保护标识&#xff0c;配置虚拟网络&#xff0c;以及实现存储解决方案和虚拟机。此外&#xff0c;课程还涵盖了实现We…

传感器标定(一)摄像头内参标定

一、使用ROS进行手动标定安装 1、安装 image-view &usb_cam ⽤于驱动相机 sudo apt-get install ros-melodic-image-view sudo apt-get install ros-melodic-usb-cam2、查看系统视频设备 v4l2- ctl -d /dev/video0 --all 查询所有相机具体的参数包括width和height ls /…

Excel数据截取及合并多行多列数据

公式一&#xff1a;RIGHT(A2,LEN(A2)-FINDB(")",A2)) 公式二&#xff1a;PHONETIC(C2:D19) 详情可以看附件。

JMeter--定时执行的方法

原文网址&#xff1a;JMeter--定时执行的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JMeter如何使用定时器定时执行测试任务。 Java技术星球&#xff1a;way2j.com 方法 第一步&#xff1a;新建定时器 右键测试任务> Add > Timer> Constant Timer 如下图所示…

【python数据处理】— “2020-01-01 05:20:15“日期格式数据

文章目录 一、数据说明及目标二、实现方式1.提取date2.提取hour3.提取weekday4.提取month 一、数据说明及目标 数据说明 数据表有一列名为"datetime"表示时间数据&#xff0c;该列的数据格式是"2020-01-01 05:20:15"。 import pandas as pd datapd.read_e…

云动态摘要 2024-07-04

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起&#xff01; [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…

搜维尔科技:【研究】Scalefit人体工程学测量系统为预防肌肉骨骼疾病提供生物力学分析

与工作相关的肌肉骨骼疾病(MSE)是工作生活中的一个持续的伴侣。总部位于科隆的Scaleit公司生产的移动生物力学测量系统Industrial Athlete有助于在工作场所立即发现疾病&#xff0c;伤害和损伤的原因。 Scalefit是一个跨学科网络的一部分&#xff0c;在德国科隆体育大学和职业…

【CT】LeetCode手撕—232. 用栈实现队列

目录 题目1- 思路2- 实现⭐232. 用栈实现队列——题解思路 3- ACM 实现 题目 原题连接&#xff1a;232. 用栈实现队列 1- 思路 思路 ① 用两个栈来实现队列&#xff0c;一个 in 入栈 和一个 out 出栈② push 入队&#xff1a;入栈逻辑&#xff1a;即将元素加入到 in 栈 里即…

spring6框架解析(by尚硅谷)

文章目录 spring61. 一些基本的概念、优势2. 入门案例实现maven聚合工程创建步骤分析实现过程 3. IoC&#xff08;Inversion of Control&#xff09;基于xml的bean环境搭建获取bean获取接口创建实现类依赖注入 setter注入 和 构造器注入原生方式的setter注入原生方式的构造器注…

Android studio开发入门教程详解(复习)

引言 本文为个人总结Android基础知识复习笔记。如有不妥之处&#xff0c;敬请指正。后续将持续更新更多知识点。 文章目录 引言UITextView文本基本用法实际应用常用属性和方法 Button按钮处理点击事件 EditText输入框基本属性高级特性 ImageView图片ImageView的缩放模式 Prog…

实战教程:如何用JavaScript构建一个功能强大的音乐播放器,兼容本地与在线资源

项目地址&#xff1a;Music Player App 作者&#xff1a;Reza Mehdikhanlou 视频地址&#xff1a;youtube 我将向您展示如何使用 javascript 编写音乐播放器。我们创建一个项目&#xff0c;您可以使用 javascript 从本地文件夹或任何 url 播放音频文件。 项目目录 assets 1…

图DFS遍历

DFS遍历图 伪代码 俩函数。 判断图有几个连通分支&#xff1f;就是图的遍历&#xff0c;dfs完了就给他 #include <iostream> #include <cstdlib> #include <bits/stdc.h> #include <vector> using namespace std; const int N102; int n,m,temp1,te…

Python学习笔记28:进阶篇(十七)常见标准库使用之质量控制中的代码质量与风格第二部分

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 质量控制…

面试篇-Redis-2+持久化+过期key删除+内存淘汰

文章目录 前言一、你知道Redis 数据是怎么持久化的1.1 Redis 持久化的方式Rdb&#xff1a;1.1.1 主动备份save 命令&#xff1a;1.1.2 Redis 中使用bgsave 进行Rdb 的持久化 &#xff1a; 1.2 Redis 持久化的方式Aof&#xff1a;1.2.1 使用AOF 模式进行数据存储&#xff1a;1.2…

数据库主从复制

目录 一.主从复制架构 二.主从复制原理 三.实现主从复制配置 1.新建主从复制 2.实战遇到问题 3.复制错误解决方法 4.级联 主从复制 5.半同步复制 MySQL数据库的主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的数据库复制架构&#xff0c;用于提…

越南宣称已成全球第二大手机出口国,富士康翻白眼,为啥限电?

日前越南媒体报道指越南今年前5个月的手机及零部件出口达到224亿美元&#xff0c;同比增长11%&#xff0c;超越印度&#xff0c;成为仅次于中国的全球第二大手机出口国&#xff0c;对此富士康、三星恐怕会有不同的意见。 为越南手机业务做出重要贡献的无疑是富士康、三星等企业…

2.2.1 ROS2案例以及案例分析

1.案例需求 需求1&#xff1a;编写话题通信实现&#xff0c;发布方以某个频率发布一段文本&#xff0c;订阅方订阅消息&#xff0c;并输出在终端。 需求2&#xff1a;编写话题通信实现&#xff0c;发布方以某个频率发布自定义接口消息&#xff0c;订阅方订阅消息&#xff0c;并…

1975react社区问答管理系统开发mysql数据库web结构node.js编程计算机网页源码

一、源码特点 react 社区问答管理系统是一套完善的完整信息管理类型系统&#xff0c;结合react.js框架和node.js后端完成本系统&#xff0c;对理解react node编程开发语言有帮助系统采用node框架&#xff08;前后端分离&#xff09;&#xff09;&#xff0c;系统具有完整的源…