写点什么

给 Java 开发者的 Maven 指南

2019 年 9 月 19 日

给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 年 9 月 19 日 18:35504

评论

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

Eureka 架构原理及其源码分析

程序员Fox

Spring Cloud Eureka

基于区块链的政务平台设计探索

华为云开发者社区

区块链 架构 安全

架构2期第八周作业(1)

浮生一梦

极客大学架构师训练营 2组 第八周作业

架构师训练营第十三周作业

月殇

极客大学架构师训练营

第四周学习心得

cc

架构师训练营第四周命题作业

Geek_xq

沪上首座“区块链生态谷”揭开面纱!

CECBC区块链专委会

大数据 生态产业

90分钟10个手写案例,从源码底层给你讲解7种线程池创建方式

小Q

学习 源码 架构 面试 多线程

工作多年还是只会用wait和notify?30分钟用案例告诉你有更好得选择

小Q

Java 学习 编程 架构 面试

点燃“云+AI”的烽火,照亮网络安全的月之暗面

脑极体

一周信创舆情观察(12.7~12.13)

统小信uos

滴滴开源Super-jacoco:java代码覆盖率收集平台

滴滴技术

Java 开源 滴滴开源 Super-Jacoco

牛啤了!字节跳动Java岗面试官把内部面试题(含答案)泄露了,明年金三银四有望了

云流

算法 架构师 java面试

微服务架构及其技术栈

程序员Fox

微服务 Spring Cloud spring cloud alibaba

架构师训练营 1 期 -- 第十三周作业

曾彪彪

极客大学架构师训练营

盘点 2020 | 感悟总结

骑着王八上高速

盘点2020

架构师训练营第 1 期 -week13

习习

极客大学架构师训练营 - 同城快递业务架构设计

好吃不贵

极客大学架构师训练营

如何让组织文化不在虚无?

Alan

团队管理 个人提升 文化 28天写作

太赞了!2021疫情期间八家大厂的Android面试经历和真题整理,值得收藏!

欢喜学安卓

android 程序员 面试 移动开发

太牛了!在字节跳动我是如何当面试官的,Android篇

欢喜学安卓

android 程序员 面试 移动开发

原创 | 使用JPA实现DDD持久化-通过Spring Data JPA访问数据

编程道与术

Java hibernate 编程 mybatis jpa

JVM垃圾回收性能分析

积极&丧

【得物技术】基于配置的通用化动态报表平台设计与使用

得物技术

设计 动态 报表 平台 通用化

算法爱好者福利—拓扑排序的简介及实现

比伯

Java 编程 架构 程序人生 算法

我不喜欢挫折教育

熊斌

成长 自我思考 自我独白 个体成长

请回答2020:芯片巨头并购潮究竟意味着什么?

脑极体

第四周命题作业

cc

朱嘉明:产业周期、科技周期与金融周期的失衡

CECBC区块链专委会

金融 科技

“九章”问世,量子计算将如何影响区块链技术?

CECBC区块链专委会

量子计算机

详解C/C++协程实现原理及使用

赖猫

c++ 协程

飞猪Flutter技术演进及业务改造的实践与思考

飞猪Flutter技术演进及业务改造的实践与思考

给Java开发者的Maven指南-InfoQ