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. c读入实型

    读入: 如果读入的数为整型,然后转为实型,则%lf 否则%f也可以 读出: %f,这样在codeblocks才能看到正确的结果

  2. 借读:分布式锁和双写Redis

      本帖最后由 howtodown 于 2016-10-3 16:01 编辑问题导读1.为什么会产生分布式锁?2.使用分布式锁的方法有哪些?3.本文创造的分布式锁的双写Redis框架都包含哪些内容? ...

  3. 口琴练习部分 - 多孔单音奏法 & 简单伴奏

     多孔单音奏法(口含5个孔) 加入伴奏 理论知识 - 盖住 理论知识 - 松开 舌头一抬一合形成一个伴奏 高级一点的伴奏练习 正拍伴奏: 当要吹吸某一个音时,舌头先离开琴格,然后迅速盖上.

  4. bzoj千题计划258:bzoj3123: [Sdoi2013]森林

    http://www.lydsy.com/JudgeOnline/problem.php?id=3123 启发式合并主席树 #include<cmath> #include<cstd ...

  5. Docker CE的安装 与镜像加速

    Docker CE 的安装与镜像加速 Docker CE是docker的开源版本 CENTOS 安装Docker CE 系统要求: 操作系统需要使用centos7() centos-extras库 必 ...

  6. [python]python三元表达式另类实现方式

    () variable = a if exper else b ()variable = (exper and [b] or [c])[] () variable = exper and b or c

  7. 洛谷 P1056 排座椅 桶排序

    桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ...

  8. 批量增加Linux系统账号、重置账号密码、FTP账号批量测试

    批量增加Linux系统账号.重置账号密码是用Linux Shell脚本来做的:批量FTP账号测试是用Python脚本来做的.这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测 ...

  9. Oracle错误及解决方案

    1.ORA-00257:归档程序错误.在释放之前仅限于内部链接 问题原因:归档日志占满了空间 解决方法: .增加归档日志空间 alter system set db_recovery_file_des ...

  10. zabbix3.0配置服务器流量告警

    zabbix配置流量告警 zabbix虽然已经对服务器的网卡流量进行了监控,但为了防止某台机器流量过高导致网络慢,或者因为中病毒或木马等原因,导致流量很高,可使用zabbix的流量告警功能来对流量进行 ...