maven 是 apache 的一个开源软件,纯 Java 编写的,专门用于管理 Java 项目的一个工具。

maven 就是一个工具而已,用不用都不耽误你刷刷的敲代码,那为什么我们还要学习它呢?

那肯定是有很多的好处啊,不知道大家有没有注意过,一个普通的 SSM 项目一般都会几十兆或上百兆,不要想太多,你写代码没多少,jar 包就占用了 90% 以上。

maven 管理项目的第一个好处就是节约内存,统一管理依赖,因为你每个项目都要引入这么多的 jar 包,而使用 maven 之后,一份 jar 包可以多次使用。

maven 还有一键构建的功能,想象一下给你一套源代码,你如何运行起来,要导入 eclipse 吧,要有 tomcat 吧,而我们安装了 maven 这个软件之后,只需要一个命令就可以搞定,不需要依赖外部的 eclipse 和 tomcat ,其实是 maven 自带这些插件。

其实,对于一般的开发来说,不用 maven 也完全 ok,那为什么大家还都说 maven 好呢,主要是应用在于大型项目开发中。

比如说某宝这样的互联网软件,系统架构一般都是按照业务逻辑分,不是我们传统说的 web ,service,dao 3 层模型开发。例如用户模块,支付模块,订单模块。不用说,不同模块之间肯定是需要相互调用,使用 maven 之后,一是方便模块之间的合并,二是方便模块之间的调用。

我们通过把开发好的模块打成 jar 包,放入仓库中,其它模块即可引用该模块。

工具类的技术你就是说出花来,还是要以实际应用为主,在使用 maven 搭建项目的时候有太多的坑,好在这些坑在网上都有答案,我这里主要提一个,那就 eclipse 版本的选择,不要选择老版本,用 16 年以后的。

剩下就是按照步骤一步一步的搭建,运行。我们使用 tomcat:run 这个命令来一键构建我们的项目。

想使用 maven 中的命令,那首先要安装 maven,配置环境变量。然后再到想操作的项目的目录中去即可。

maven 常见的命令。

tomcat:run 一键构建项目。

mvn clear 清理编译好的文件。

mvn compile 编译文件,只编译 main 中的文件,test 没有编译。

mvn test 编译并运行了 test 目录中的代码。

mvn package 项目打包。打成的包会放在 target 目录中。

mvn install 把项目打包发布到本地仓库,当项目是 Java 项目时,可以使用该命令,这样我们就可以在 pom.xml 中引用自己写的工具了。

maven 中主要的配置文件有两个,一个是 maven 软件的配置文件,在安装目录下 conf 中的 setting.xml 文件,这里主要是定义本地仓库的位置。而另一个 pom.xml 文件是 maven 项目的依赖管理文件。管理的不只是 jar 包,还有各种插件。

说到仓库,maven 中共有 3 个仓库,本地仓库;就是我们在 setting.xml 中设置的位置。远程仓库;也称私服,是由公司运维人员维护的一个仓库,就是一个放在公司服务器上的 jar 包文件夹,可以理解为是一个“jar 包数据库”。最后是中央仓库;这是由 maven 团队维护的。

这 3 个仓库的关系一句形象的的描述就是 ” 大河一直有水,小河不会干。“ 大河就是指中央仓库,小河就是我们本地的仓库,那为什么还要来个私服呢?因为我们公司自己也会有产出呀,会写一些工具类或是固定的模块,打成 jar 包放在私服之后,我们便可以随时随用。

我们知道在 pom.xml 文件中,像这样就可以引入 jar 包。

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

maven 是如何查找 jar 包呢?根据坐标,哪个组织或公司的哪个项目的什么版本。这也就对应上面的 groupId artifactId 和 version。

还有一个 scope 是什么意思呢?代表的是 jar 包的应用范围,一个项目从源码到运行会存在编译,测试,运行这几个阶段,而 scope 就是对 jar 包在不同阶段是否存在做控制。

还有一个问题,我们需要用到 XXX jar 包时,我们该怎么做呢?若是你清楚的知道哪个公司哪个项目和版本,我们可以在 pom.xml 文件中,右击- maven - add repository 来添加。

在添加之前我们需要为本地仓库创建索引,不然是找不到 jar 包的,创建索引的方式 window - show view - other - Maven Repositories - Local Repository 右键 rebuild index。

还有另一种更方便的方式,直接网上找一下 jar 包的坐标,然后自己整理一份 pom.xml 需要的时候直接拿来用。

下面是使用 Eclipse 搭建一个 Maven 项目的具体步骤。

https://blog.csdn.net/yujikui1/article/details/84632917

使用 Maven 来管理项目 & 从 0 开始搭建 Maven 项目的更多相关文章

  1. 基于.NetCore开发博客项目 StarBlog - (5) 开始搭建Web项目

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  2. 使用 IDEA 创建 Maven Web 项目 (二)- 搭建 WEB 项目框架

    转为 Java Web 项目 将上一节中创建的 Maven 项目调整为 WEB 项目结构,步骤如下: 在 main 目录下,添加 webapp 目录. 在 webapp 目录下,添加 WEB-INF ...

  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA

    笔记 2.快速搭建SpringBoot项目,采用IDEA     简介:使用SpringBoot start在线生成项目基本框架并导入到IDEA中 参考资料:         IDEA使用文档    ...

  4. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse

    笔记 1.快速搭建SpringBoot项目,采用Eclipse     简介:使用SpringBoot start在线生成项目基本框架并导入到eclipse中 1.站点地址:http://start. ...

  5. 从0开始搭建Element项目

    第一步:安装 Node.js/NPM 下载Node.js:https://nodejs.org/zh-cn/download/ 下载安装即可. 第二步:安装 vue-cli 打开 cmd 创建,在命令 ...

  6. 【Dotnet9-01】从0开始搭建开源项目-lqclass.com

    行文目录 一. 前言 1.1 我的现有网站 1.2 想法:新开发一个网站 1.3 目前开发计划 二. 行动了 2.1 Github创建项目 2.2 使用 WTM 搭建后台框架 2.3 项目演示 2.4 ...

  7. Maven入门指南11:使用Nexus搭建Maven私服

    1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部 ...

  8. Maven学习(八)-- 使用Nexus搭建Maven私服

    摘自:http://www.cnblogs.com/xdp-gacl/p/4068967.html 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人 ...

  9. node 项目中 koa2 环境搭建 以及项目发布

    环境搭建: 1.Koa 必须使用 7.6 以上的版本.如果你的版本低于这个要求,就要先升级 Node. 查看node版本方法:node -v 2.使用koa-generator生成器生成项目 安装ko ...

随机推荐

  1. PHP内核-代码的执行(二)

    学习来源:http://www.php-internals.com/book/?p=chapt02/02-00-overview 最开始学习PHP的时候感觉上手真的好容易,噼里啪啦一个回车 “Hell ...

  2. 哈夫曼树;二叉树;二叉排序树(BST)

    优先队列:priority_queue<Type, Container, Functional>Type 为数据类型, Container 为保存数据的容器,Functional 为元素比 ...

  3. [六字真言]5.咪.功力不足,学习前端JavaScript异常

    A Guide to Proper Error Handling in JavaScript 这是关于JavaScript中异常处理的故事.如果你相信 墨菲定律 ,那么任何事情都可能出错,不,一定会出 ...

  4. Linux命令(八)Linux系统信息相关命令

    top:

  5. python学习笔记5--json处理

    import json #json串就是字符串. d = { 'car':{'color':'red','price':100,'count':50}, 'bus':{'color':'red','p ...

  6. [原]Android Fragment 入门介绍

    Fragment Fragment 产生,优点,用途,使用方法简介 1 Fragmeng简介 自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片.片段.其上的是为 ...

  7. gulp.js 的安装以及使用

    首先:电脑需要安装 Node.js 一个大绿色的安装按钮,点击就可以. 但还是推荐,点击download选中一款适合电脑配置的版本. Node安装过程,就是下一步 and 下一步~~ 测试手否安装成功 ...

  8. cmd命令,bat脚本

    1.cd /d D:\>cd mysql D:\mysql>cd /d C:/TEMP C:\Temp>cd /? 显示当前目录名或改变当前目录. CHDIR [/D] [drive ...

  9. 一个无锁消息队列引发的血案(三)——地:q3.h 与 RingBuffer

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  10. 解决JavaFTP上传文件假死问题

    之前使用ftp上传文件,代码很稳定,用了快三年,因为数据迁移,从搭建了ftp服务器,配置好ip和账号密码后,再使用之前代码发现: 在下载过程中,程序出现假死的现象,就是,既不报错,也不抛异常,还不终止 ...