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. 口琴练习部分 - 多孔单音奏法 & 简单伴奏

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

  2. 说说SQL Server的数据类型

    以SQL Server为例,SQL Server的数据类型总共有33种,归纳为一下类别: 精确数字 Unicode字符串 近似数字 二进制字符串 日期和时间 其他数据类型 字符串   1.数字数据类型 ...

  3. 项目中经常用到的JavaScript方法

    1. js切割字符串 String.split() 注意:此方法与Array.join执行的方法是相反的. 2. js把数组中所有元素放入一个字符串 Array.join()

  4. 在CentOS上导出JVM内存信息

    首先看下Tomcat的进程Id: [root@iZ25Z ~]# ps aux | grep java www 2111 4.0 23.5 1637648 452756 ? Sl 10:12 4:35 ...

  5. SQL记录-PLSQL函数

    PL/SQL函数 PL/SQL函数与过程相同,不同之处在于函数有一个返回值.因此,前面的章节中的所有讨论都适用于函数. 创建函数 建立一个独立函数可以使用CREATE FUNCTION语句创建.CRE ...

  6. 字符串日期转化以及yyyy-MM-dd HH:mm:ss大小写解释

    字符串日期转化 字符串转换为Calendar对象: // 日期字符串 private String dateStr; // 将字符串转换后的Calender对象 private Calendar ca ...

  7. bzoj千题计划206:bzoj1076: [SCOI2008]奖励关

    http://www.lydsy.com/JudgeOnline/problem.php?id=1076 很容易想到方程 dp[i][j]表示抛出了i个宝物,已选宝物状态为j的期望最大得分 初始化dp ...

  8. [转]CSS浏览器兼容问题总结

    E6.0,ie7.0与Firefox的CSS兼容性问题1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中,  ...

  9. CSS3 响应式布局: @media (min/max-width:***) @font-face

    响应式布局 responsive design @media 属性 bootstrap  css 分析: @media (min-width:768px){ body{***} } use @medi ...

  10. oracle列转行

    unpivot()函数需要Oracle版本大于等于11g --创建表 create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 in ...