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#列表所有IIS站点以及相关站点属性

    using System; using System.Drawing; using System.Collections; using System.ComponentModel; using Sys ...

  2. oracle数据库连接池查看

    select username , count(*), machine from v$session where username is not null group by username, mac ...

  3. java基础基础总结----- Date

    前言:其实在学习这个的时候,自我感觉学到什么直接查询API就可以了,没有必要再去研究某个方法怎么使用, 重点学习一下经常用到的方法.感觉自己的写的博客,就跟自己的笔记一样,用的是时候,就能快速的查找 ...

  4. react入门-组件方法、数据和生命周期

    react组件也像vue一样,有data和methods,但是写法就很不同了: <!DOCTYPE html> <html lang="en"> <h ...

  5. MySQL5.6主从复制最佳实践

    MySQL5.6     主从复制的配置  环境 操作系统:CentOS-6.6-x86_64 MySQL 版本:mysql-5.6.26.tar.gz 主节点 IP:192.168.31.57    ...

  6. str函数

    python2: a = str(unicode类对象) #str()函数如果接收的参数是unicode类,会转换为python的defaultencoding格式,所以,如果unicode类对象是汉 ...

  7. 04 uni-app框架学习:禁用顶部原生导航栏

    1.在pages.json中配置 比如要首页禁用 就在首页这个选项里 加上这几句代码 2.效果如下

  8. [转]Restrict关键字

    0 定义 C99中新增加的用于修饰指针的关键字,用于表示该指针所指向的内存,只有通过该指针访问得到(如下ptr指向的内存单元只能通过ptr访问得到).从而可以让编译器对代码进行优化,生成更有效率的汇编 ...

  9. Git 使用规范流程【转】

    转自:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清 ...

  10. Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

    转自http://blog.csdn.net/droidphone/article/details/7165482 1.  ASoC的由来 ASoC--ALSA System on Chip ,是建立 ...