2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

给 Java 开发者的 Maven 指南

  • 2019-09-19
  • 本文字数:1905 字

    阅读完需:约 6 分钟

给Java开发者的Maven指南

Apache Maven 是 Java 开发者的重要工具。可以让 Java 开发者使用标准的目录结构来更快地创建 Java 项目,还可以帮助 Java 开发者自动下载项目依赖,让工作更加轻松。不仅如此,Maven 还可以自动下载传递依赖,帮助 Java 开发者从极端复杂的依赖关系中解脱出来。


如果你的应用依赖 Spring 框架,但 Spring 又依赖 Log4j,如果没有 maven,你还需要为 Spring 下载正确版本的 Log4j,而 Maven 会为你自动搞定这一切。


Maven 还是一个构建工具,可以帮助你构建项目、将项目上传到中央或本地 nexus 仓库,并自动在各种环境中发布使用。


简而言之,对于任何专业的 Java 开发者来说,了解 Maven 知识是必须的。在本文中,我将分享一些每个 Java 开发者都应该知道的 Maven 知识点。这些知识将帮助你充分利用 Maven、简化你的日常开发任务,例如项目的编译、单元测试、部署、回归测试以及其他许多任务。


  1. Maven 是一种构建工具,就像 ANT,用于在 Java 环境中创建可交付的 JAR,WAR 和 EAR 文件 .Maven 和 ANT 之间有很多差异[1],Maven 使用约定大于配置原则,所需的配置很少,很容易使用。

  2. 使用 Maven 构建 Java 应用的主要优点是依赖关系管理

  3. Java 应用往往都依赖许多拥有不同版本的内部和外部开源库,通过 Maven 仓库来存储这些开源库所有版本的 jar 包,并让每个开发者在使用 Maven 构建他们的应用时自动导入就十分有意义。 Maven 自己便维护着最著名的全局仓库,比如: https://repo1.maven.org/

  4. Maven 还可以管理传递依赖(transitive dependencies)

  5. 当你将 Spring 框架作为依赖项包含在项目中时,这意味着你不需要下载 Spring 所依赖的所有库。Maven 将为你下载这些 JAR 包,并维护正确的版本,这是一个非常棒的功能,可以节省构建环境需要的大量时间,同时避免由于不正确的版本依赖,造成的诸如 UnSupportedClassVersionError[2]和 NoClassDefFoundError[3]之类的错误。

  6. 为了使用 Maven,需要在你的计算机中安装 Apache Maven 并配置 settings.xml

  7. 其中需要包含本地仓库名称和详细的连接配置。可以按照本指南中的步骤在 Windows 8 机器中安装 Maven。

  8. 如果你用的是 Eclipse,那你可以使用 M2Eclipse Maven 插件

  9. 这个插件使你能够从 Eclipse 创建,修改和运行 maven 项目。可以从 Eclipse Marketplace 下载并安装 M2E Eclipse 插件。如果你在 Eclipse IDE 中使用 Maven,请参阅 Eclipse Java 开发者的 3 Maven Tips 了解更多。

  10. 如果你用的是 IntelliJ IDEA,那么只能说你太棒了,IDEA 对 Maven 的支持更完美,好像并没有罗嗦的必要 :)

  11. 一旦在本地机器上安装并配置了 Maven,就可以创建 Maven 项目

  12. Maven 项目强制使用标准目录来组织源代码,资源和测试类。按照约定进行管理,这意味着所有 Java 类都将放到 src/main/java 文件夹,所有测试类都将放到 src/main/test 文件夹。请参阅 Maven Essentials 了解有关 Maven 约定的更多配置。

  13. Maven 中另一个要点是 pom.xml,这类似于 ANT 构建工具的 build.xml

  14. 对于每个项目,都有自己的 pom.xml 来表示 Project 对象模型。pom.xml 中包含项目详细信息(例如 artifactId,groupId,name 等)、用于创建可交付的 JAR 文件,并可用于在内部的 maven 存储库中上传 JAR。pom.xml 还包含项目中使用的 Maven 插件。 JAR 插件负责从类文件和资源创建 JAR 文件。pom.xml 还包含项目的依赖关系(例如 JAR 文件及其版本)。

  15. 你可以从命令行或 Eclipse 里构建和运行 Maven 项目

  16. 类似于 ANT 的 Task,Maven 有 Goal,你可以通过使用命令行中的 mvn 命令调用它们来运行这些 Goal。为了从命令行构建和运行 maven 项目,你需要将包含 Maven 二进制文件的路径(MAVEN_HOME/bin)配置到 PATH 环境变量中。如果你安装了 M2Eclipse 插件,那么你可以直接执行 mvn clean 或是 mvn install。

  17. clean 和 install 是两个经常使用的 Maven Goal。


10.当你使用 Maven 构建项目时,它将创建类文件,并向目标目录(target)中复制资源


如果你使用 Eclipse,那么你还可以使用 M2Elcipse 插件构建你的 Maven 项目,只需右键单击并选择 Maven Install 或 Maven Build 选项,如下图所示:



Maven install 命令同时运行 maven clean 和 maven build。


Maven clean 将从 target 目录清理旧的构建物,例如 class 文件。


现如今 Gradle(一种用 groovy 编写的构建工具)也被越来越多的开发者选用,但 Maven 仍然是 Java 项目最受欢迎的构建工具。Gradle 使用特定的 Groovy DSL 来编写构建脚本,有一定地学习曲线,需要花费更多的时间来学习。而 Maven 使用 XML,任何人都可以了解构建过程和依赖关系。


本文转载自公众号贝壳产品技术(ID:gh_9afeb423f390)。


原文链接:


https://mp.weixin.qq.com/s/yEvm9eiO7gxG7j2YR_2nQw


2019-09-19 18:351733

评论

发布
暂无评论
发现更多内容

H5 APP开发框架及特点

北京木奇移动技术有限公司

APP开发 软件外包公司 H5 APP

邀请函|相约新乡——“AI 赋能,智造跃迁” AI 驱动数字化创新设计促进新质生产力发展交流会

Altair RapidMiner

AI 数字化转型 仿真 智能制造 CAE

19.5stars!未来十年一定要学的免费、开源的OLAP数据库——DuckDB

遇码

大数据 开源 数据分析 OLAP duckdb

【GreatSQL优化器-16】INDEX_SKIP_SCAN

GreatSQL

字节跳动冯佳时:大语言模型在计算机视觉领域的应用、问题和我们的解法

极客天地

认知、实践、驾驭:AI 时代普通人的务实生存法则

小鲸数据

OCAI + DeepSeek满血版双buff加成,OS运维从此告别焦虑

OpenCloudOS

AI OpenCloudOS 社区 DeepSeek

当达索仿真遇上DeepSeek:AI给工程研发装上了"智慧大脑"

思茂信息

abaqus DeepSeek SIMULIA CST Studio Suite 达索

黑龙江等级保护测评到底该不该每年都做?

黑龙江陆陆信息测评部

推荐一款好用的智能工单系统,有哪些智能化应用场景

云智慧AIOps社区

ITSM ITSM软件 工单系统 智能工单

智能制造架构设计方案

金陵老街

智慧工厂 智能制造

鸿蒙APP性能优化

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

YashanDB数据库服务端SSL连接配置

YashanDB

数据库 yashandb

YashanDB HA节点间SSL连接配置

YashanDB

数据库 yashandb

YashanDB操作系统身份认证配置

YashanDB

数据库 yashandb

Sandisk闪迪携UFS 4.1存储解决方案亮相CFMS | MemoryS 2025

极客天地

三个AI思维,让你拥有碾压DeepSeek实力

小鲸数据

DeepSeek AI思维

一招解决数据库中报表查询慢的痛点

阿里技术

数据库 duckdb TP系统

YashanDB TLCP连接配置

YashanDB

数据库 yashandb

从ChatGPT到DeepSeek,现象级爆火背后的数学逻辑!

小鲸数据

推理大模型时代,TextIn ParseX助力出版业知识资产重构

合合技术团队

人工智能 算法 图表 图像处理 大模型

首次覆盖超 11 类真实编程场景!豆包大模型团队开源代码大模型全新基准

科技热闻

YashanDB分布式节点间SSL连接配置

YashanDB

数据库 yashandb

从古籍到算法,数智本草大模型背后的研发之路

华为云开发者联盟

人工智能 盘古大模型 大模型

《Operating System Concepts》阅读笔记:p258-p271

codists

操作系统

RocketMQ:消息发送机制

葛飞

企业为什么需要建设零信任身份安全

芯盾时代

iam 零信任 统一身份管理平台

【活动预告】3.15 数据与 AI 新技术论坛,徐汇西岸见!

Apache IoTDB

为什么说JSON不一定是LLM结构化输出的最佳选择?

Baihai IDP

程序员 AI LLMs 格式化数据

DeepSeek大模型6大部署模式解析与探索测试开发技术赋能点

测试人

人工智能 软件测试

MAC与HMAC技术辨析

石君

hash HMAC-SHA

给Java开发者的Maven指南_文化 & 方法_卿科_InfoQ精选文章