当前位置: 首页 > news >正文

Maven项目细节

Maven 是一个广泛使用的 Java 项目管理和构建工具:

  1. 项目管理

    • 项目对象模型(POM):Maven 使用 POM(Project Object Model)来管理项目。POM 是一个 XML 文件,包含了项目的元数据(如项目名称、版本、描述等)、依赖关系、构建配置等信息。每个 Maven 项目都有一个位于项目根目录的pom.xml文件。
    • 依赖管理:Maven 通过在 POM 中声明依赖项,自动下载和管理项目所需的库和框架。例如,在pom.xml中添加以下依赖来引入 JUnit 测试框架:
<dependencies><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.8.2</version><scope>test</scope></dependency>
</dependencies>
  • 依赖传递:Maven 会自动处理依赖的传递性,即如果项目 A 依赖于项目 B,而项目 B 又依赖于项目 C,Maven 会确保项目 C 的依赖也被正确引入到项目 A 中。
  1. 构建生命周期

    • 清理(clean):删除以前构建生成的所有文件和目录,如target目录。
    • 编译(compile):将项目的源代码编译成字节码文件。对于 Java 项目,会将src/main/java目录下的 Java 源文件编译到target/classes目录中。
    • 测试(test):运行项目的单元测试。Maven 默认使用 Surefire 插件来执行测试,测试代码通常位于src/test/java目录下。
    • 打包(package):将项目打包成可部署的格式,如 JAR(Java Archive)、WAR(Web Application Archive)或 EAR(Enterprise Application Archive)文件。对于 Java 项目,JAR 文件会包含项目的类文件和依赖项(如果配置了)。
    • 安装(install):将打包好的项目安装到本地 Maven 仓库中,以便其他项目可以依赖它。
    • 部署(deploy):将项目部署到远程 Maven 仓库,供团队成员或其他项目使用。
  2. 仓库管理

    • 本地仓库:Maven 在本地计算机上维护一个仓库,用于存储下载的依赖项和已安装的项目构件。默认情况下,本地仓库位于用户主目录下的.m2/repository目录。
    • 远程仓库:Maven 从远程仓库下载依赖项。中央仓库(Maven Central Repository)是默认的远程仓库,包含了大量的开源库和框架。此外,项目也可以配置使用其他远程仓库,如公司内部的私有仓库。
  3. 插件机制

    • Maven 通过插件来扩展其功能。每个构建阶段(如编译、测试、打包等)都可以由相应的插件来执行。例如,Maven Compiler 插件用于编译 Java 源代码,Maven Surefire 插件用于执行单元测试。用户可以在pom.xml中配置插件的参数和行为,以满足项目的特定需求。
  4. 多模块项目

    • 对于大型项目,可以将其拆分为多个模块。每个模块都是一个独立的 Maven 项目,有自己的pom.xml文件。模块之间可以定义依赖关系,父模块可以管理子模块的版本和依赖等信息。这有助于提高项目的可维护性和可扩展性。

 

IDEA中构建Maven

在IDEA中创建Maven项目

其中

GroupId       为域名的后缀

ArtifactId为样例

<parent>为依赖包及版本的集中管理
<dependencies>   依赖
<build>   构建工具

http://www.xdnf.cn/news/178867.html

相关文章:

  • re题(48)BUUCTF-[网鼎杯 2020 青龙组]singal
  • vue项目页面适配
  • Java学习--HashMap
  • 科技打头阵,创新赢未来——中科视界携千眼狼超高速摄像机亮相第三届科交会
  • 【HPC存储性能测试】02-ior带宽性能测试
  • acwing532. 货币系统
  • 【操作系统原理07】输入/输出系统
  • 常用的多传感器数据融合方法
  • 安卓屏播放语音失败,报错TextToSpeech: speak failed: not bound to TTS engine
  • risc-V学习日记(4):RV32I指令集
  • 开关电源实战(六)ADDC反激电源
  • 说一下Drop与delete区别
  • 在java中实现protobuf自定义协议
  • 通过ThreadLocal存储登录用户信息
  • LeetCode每日一题4.27
  • 【HPC存储性能测试】01-OpenMPI部署
  • 深入理解指针(5)
  • 【Leetcode 每日一题】3392. 统计符合条件长度为 3 的子数组数目
  • lobechat调用ollama模型,服务连接失败
  • UE5 NDisplay 单主机打包运行
  • SaaS方兴未艾,快速稳定的访问与全面的安全防护成关键
  • 典籍查询界面增加我的收藏查询功能
  • AI 数据中心 vs 传统数据中心:从硬件架构到网络设计的全面进化
  • 0基础 | Proteus | 中断 | 点阵
  • keil 中优化等级的bug
  • 泰迪杯实战案例超深度解析:旅游景点游客流量预测与资源优化
  • Zabbix
  • 测试基础笔记第十四天
  • Java基础——排序算法
  • 底层源码和具体测试解析HotSpot JVM的notify唤醒有序性(5000字详解)