maven的基本思想与基本操作

Maven 是一个强大的项目管理和构建自动化工具,广泛应用于 Java 项目开发中。以下是 Maven 的一些常用知识:

基本概念

  • 项目对象模型(POM):Maven 项目的核心是 pom.xml 文件,它是一个 XML 文件,描述了项目的基本信息(如项目名称、版本、开发者等)、依赖关系、构建配置等。通过 pom.xml,Maven 可以了解项目的结构和需求,从而进行相应的构建和管理操作。
  • 约定优于配置:Maven 遵循约定优于配置的原则,为项目定义了标准的目录结构。例如,源代码通常放在 src/main/java 目录下,测试代码放在 src/test/java 目录下,编译后的类文件放在 target/classes 目录下等。这种约定使得项目结构清晰,易于理解和维护。
  • 生命周期:Maven 定义了一套标准的生命周期,包括清理、编译、测试、打包、部署等阶段。每个生命周期阶段由一系列的插件目标(goals)组成,Maven 会按照预定的顺序依次执行这些阶段和目标,确保项目的构建过程规范化。

常用命令

  • mvn clean:清理项目,删除 target 目录下的所有生成文件,如编译后的类文件、打包文件等,为下一次构建做准备。
  • mvn compile:编译项目的源代码,将 src/main/java 目录下的 Java 文件编译成字节码文件,存放在 target/classes 目录中。
  • mvn test:运行项目的单元测试,会执行 src/test/java 目录下的测试代码。Maven 会自动调用测试框架(如 JUnit)来执行测试,并生成测试报告。
  • mvn package:将项目打包成可分发的格式,如 JAR、WAR 等。对于 Java 项目,通常会生成一个 JAR 文件;对于 Web 项目,会生成一个 WAR 文件。打包后的文件会存放在 target 目录下。
  • mvn install:将项目打包并安装到本地 Maven 仓库中,这样其他项目就可以通过依赖声明来使用该项目。本地仓库默认位于 ~/.m2/repository 目录下。
  • mvn deploy:将项目打包并部署到远程 Maven 仓库中,供其他开发者或项目使用。通常用于团队协作或开源项目的发布。

依赖管理

  • 依赖声明:在 pom.xml 文件中,通过 <dependencies> 标签来声明项目的依赖项。每个依赖项由 <dependency> 标签表示,包含 groupIdartifactIdversion 三个必要元素,用于唯一标识一个依赖库。例如:
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>
  • 依赖范围(scope):Maven 提供了多种依赖范围,用于控制依赖在不同阶段的可用性。常见的依赖范围有 compile(默认)、testruntimeprovided 等。例如,test 范围的依赖只在测试阶段可用,不会包含在最终的打包文件中。
  • 依赖传递:Maven 支持依赖传递,即一个依赖项可能会引入其他依赖项。Maven 会自动处理依赖传递,确保所有必要的依赖项都被正确下载和使用。但在某些情况下,可能会出现依赖冲突,需要通过 <exclusions> 标签来排除不必要的依赖。

插件使用

  • 插件概述:Maven 的功能通过插件来扩展,每个插件可以完成特定的任务,如编译、测试、打包等。插件通常由 <plugin> 标签在 pom.xml 文件中配置。
  • 常用插件
    • maven-compiler-plugin:用于编译 Java 源代码,可以配置编译的 Java 版本等参数。
    • maven-surefire-plugin:用于运行单元测试,可以配置测试框架、测试用例的过滤规则等。
    • maven-jar-plugin:用于将项目打包成 JAR 文件,可以配置打包的方式、包含的文件等。

仓库管理

  • 本地仓库:本地仓库是开发者本地的一个目录,用于存储已下载的依赖库和已安装的项目。默认情况下,本地仓库位于 ~/.m2/repository 目录下。
  • 远程仓库:远程仓库是存储公共依赖库的服务器,Maven 会从远程仓库下载项目所需的依赖。常见的远程仓库有 Maven 中央仓库(https://repo.maven.apache.org/maven2),也可以配置其他的远程仓库,如公司内部的私有仓库。

多模块项目

  • 概念:Maven 支持多模块项目,即一个项目可以由多个子模块组成。每个子模块可以有自己独立的 pom.xml 文件,并且可以相互依赖。多模块项目可以提高代码的复用性和可维护性,方便团队协作开发。
  • 配置:在父项目的 pom.xml 文件中,通过 <modules> 标签来声明子模块。例如:
<modules>
    <module>module1</module>
    <module>module2</module>
</modules>

以上是 Maven 的一些常用知识,掌握这些知识可以帮助你更好地使用 Maven 进行项目管理和构建。

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

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

相关文章

硬件学习笔记--47 LDO相关基础知识介绍

目录 1.LDO主要功能介绍 2.LDO相关参数介绍 3.使用方法 4.优、缺点 1.LDO主要功能介绍 LDO&#xff08;Low Dropout Regulator&#xff09;是一种线性稳压器&#xff0c;用于将输入电压转换为稳定的输出电压。其主要功能包括&#xff1a; 1&#xff09;稳压功能&#xff1…

利用矩阵相乘手动实现卷积操作

卷积&#xff08;Convolution&#xff09; 是信号处理和图像处理中的一种重要操作&#xff0c;广泛应用于深度学习&#xff08;尤其是卷积神经网络&#xff0c;CNN&#xff09;中。它的核心思想是通过一个卷积核&#xff08;Kernel&#xff09; 或 滤波器&#xff08;Filter&am…

STM32-HAL库初始化时钟

使能和失能外设GPIOA 时钟信号初始化函数 HAL_RCC_OscConfig函数&#xff1a; HAL_StatusTypeDef是该函数的返回值类型,最顶上的那句话只是这个函数的原型 HAL_RCC_ClockConfig函数&#xff1a; 因为FLASH实际上只能支持24MHz的时钟信号所以如果用高于24MHz的信号输入则要用到等…

windows环境执行composer install出错

现在的项目环境都是要求比较新的版本&#xff0c;就比如今天部署测试一个新框架遇到了下面这些问题&#xff0c;报错原因有以下几点&#xff1a; PHP版本低了&#xff0c;现在的新项目都是要求PHP8以上版本&#xff1b;指令废弃&#xff0c;配置文件禁用即可&#xff1b;切换P…

Three.js 入门(光线投射实现3d场景交互事件)

本篇主要学习内容 : 光线投射器交互事件 点赞 关注 收藏 学会了 1.光线投射器 Raycaster 此类旨在协助光线投射。光线投射用于鼠标拾取&#xff08;确定鼠标在 3D 空间中的哪些对象上&#xff09;等。 Raycaster( origin : Vector3, direction : Vector3, near : Float,…

蓝桥杯web第三天

展开扇子题目&#xff0c; #box:hover #item1 { transform:rotate(-60deg); } 当悬浮在父盒子&#xff0c;子元素旋转 webkit display: -webkit-box&#xff1a;将元素设置为弹性伸缩盒子模型。-webkit-box-orient: vertical&#xff1a;设置伸缩盒子的子元素排列方…

Unity 使用NGUI制作无限滑动列表

原理&#xff1a; 复用几个子物体&#xff0c;通过子物体的循环移动实现&#xff0c;如下图 在第一个子物体滑动到超出一定数值时&#xff0c;使其放到最下方 --------------------------------------------------------------》 然后不停的循环往复&#xff0c;向下滑动也是这…

网络安全蜜罐产品研究现状

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、知识点总结 1、蜜罐&#xff08;Honeypot&#xff09;&#xff1a;诱捕攻击者的一个陷阱。 2、蜜网&#xff08;Honeynet&#xff09;&#xff1a;采用了技术…

SpringBoot3—场景整合:环境准备

一、云服务器 阿里云服务器开通安装以下组件 dockerrediskafkaprometheusgrafana 下载windterm&#xff1a;https://github.com/kingToolbox/WindTerm/releases/download/2.5.0/WindTerm_2.5.0_Windows_Portable_x86_64.zip 重要&#xff1a;开通云服务器以后&#xff0c;请一…

Ollama进行DeepSeek本地部署存在安全风险解决方案,nginx反向代理配置

文章目录 概要整体架构流程技术细节**## 1.下载nginx [https://nginx.org/en/download.html](https://nginx.org/en/download.html),推荐Stable version稳定版**2.下载完成解压文件,打开conf文件夹下的nginx.conf,贴上反向代理配置3.然后点击解压文件夹下的nginx.exe,启动成…

【音视频】ffmpeg音视频处理基本流程

一、ffmpeg音视频处理基本流程 首先先看两条命令 ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 1280x720 2.flv ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 -s 1280x720 3.mkv-i :表示输入源&#xff0c;这里是1.mp4&#xff0c;是当前路径下的视频文件-acodec copy…

计算机网络基础:认识网络拓扑结构

计算机网络基础&#xff1a;认识网络拓扑结构 一、前言二、网络拓扑结构的基本概念2.1 定义2.2 作用 三、常见的物理拓扑结构3.1 总线型拓扑结构3.1.1 定义和结构3.1.2 工作原理3.1.3 优点3.1.4 缺点3.1.5 适用场景3.1.6 示例图 3.2 星型拓扑结构3.2.1 定义和结构3.2.2 工作原理…

基于Android平台的SOME/IP测试模块 EPT-ETS

在汽车产业智能化、网联化的时代浪潮中&#xff0c;汽车电子系统正经历着前所未有的变革。SOME/IP&#xff08;Scalable service-Oriented MiddlewarE over IP&#xff09;协议作为汽车电子通信领域的关键技术&#xff0c;其稳定性、可靠性与高效性对于整车性能的提升起着至关重…

【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.2.3案例:电商订单日志每秒10万条写入优化

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 Elasticsearch批量写入性能调优实战&#xff1a;2.2.3 案例&#xff1a;电商订单日志每秒10万条写入优化1. 原始架构与瓶颈分析1.1 初始集群配置1.2 性能瓶颈定位 2. 全链路…

解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题

一.软件环境 windows10、11系统、springboot2.x、redis 6 7 linux&#xff08;centos&#xff09;系统没有出现这问题&#xff0c;如果你是linux系统碰到的&#xff0c;本文也有一定大参考价值。 根本思路就是&#xff1a;tcp/ip连接的保活(keepalive)。 二.问题描述 在spr…

【开源项目-AI研发】ai-engineer-toolkit

项目地址&#xff08;Fork: 40, Star: 301&#xff09; GitHub - break-into-data/ai-engineer-toolkit: Projects & Resources to help you become a better AI Developer. 项目介绍 官方介绍&#xff1a;帮助你成为更好的 AI 开发者的工具和资源 项目本身是个表格&am…

白帽子讲Web安全资源下载

资源简介 本仓库提供《白帽子讲Web安全》一书的资源下载。这本书由阿里巴巴安全专家刺总编写&#xff0c;是网络安全领域的经典之作&#xff0c;对于从事网络安全工作的专业人士来说是必备的参考资料。 资源描述 书名: 白帽子讲Web安全作者: 阿里巴巴刺总适用人群: 网络安全…

深度学习架构Seq2Seq-添加并理解注意力机制(一)

第一章&#xff1a;人工智能之不同数据类型及其特点梳理 第二章&#xff1a;自然语言处理(NLP)&#xff1a;文本向量化从文字到数字的原理 第三章&#xff1a;循环神经网络RNN&#xff1a;理解 RNN的工作机制与应用场景(附代码) 第四章&#xff1a;循环神经网络RNN、LSTM以及GR…

基于springboot的丢失儿童的基因比对系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 本丢失儿童的基因比对系统采用B/S架构&#xff0c;数据库是MySQL&#xff0c;网站的搭建与开发采用了先进的Java进行编写&#xff0c;使用了Spring Boot框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。用户主要功能包括&#xff1a;用户注册、登…

Mysql面试篇笔记:

优化&#xff1a; 1.如何定位慢查询&#xff1a; 首先压测接口&#xff0c;查看那个接口比较慢&#xff0c;可以通过多种工具&#xff0c;比如Skywaking 可以查看各个接口响应时间&#xff0c;查看接口最慢&#xff0c;然后去跟踪接口&#xff0c;查看详细信息&#…