Maven是什么?

搞了两个星期的课设,学了Java,Spring,SpringMVC、Maven、pom.xml、持久层、JSP、HTML、Tomcat、MyBatis、JDBC.

刚开始学的时候,我总是在学Spring的时候碰到Maven的概念,还有碰到Tomcat、Mybatis,我就在想这些东西究竟是个什么东西?我的求知欲一下子就被打开了。
然后疯狂上网查资料,实在不会的看视频总结,后来渐渐知道了,这些东西大概到底是做什么的,以及为什么会有这些东西
我现在想站在我当初还什么都不知道的时候来用最通俗的话来一句话大致概括:Maven究竟是个什么东西?

上面罗列的这几个概念我都想一一用最通俗的语言解释出来,就先从Maven开始吧。
我也是小白啊,学习新东西对于小白来说确实是很吃力的,但是你一旦理解了这个概念本质,再回过头去看他的概念定义,你的理解就会进一步加深,还会惊叹这概念竟然解释得这么全面,哈哈哈
如果一开始不能很通俗地理解一个概念,而是看一堆概念,这可太打击学习的劲头了,我去搜了百度,果不其然给出的解释是这样的:

 

我现在喜欢一种学习新知识或者说新概念的方法,那就是在搜索这个关键词的时候加入“到底什么是xxx”,比如“到对什么是Maven”,然后习惯性屏蔽csdn网站(因为质量差= =),接着连看多种回答,然后将这几个回答的共性找出来,自己再总结一遍,讲给别人听,或者写博客记录下来。

我觉得对于初学者来说一开始学一个东西,最终要的是具象而不是抽象

那么在我看来Maven到底是什么?

Maven其实就是:

 

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
</dependency>

 

是的,说的不负责任一点,这就是Maven,这一段代码就代表了Maven的设计理念,以及Maven所要解决的问题

在导入包,导入依赖的时候之用几行代码就可以解决,不用自己手动导入,复制。

作为小白,我觉得你跟我说一堆概念,说这个Maven巴拉巴拉怎么怎么样,我倒不如觉得你跟我说maven就是这几行代码,我反而觉得看着心里面踏实一点。我觉得刚开始学东西确实可以学的笼统一点,因为这样可以让我们大概知道这是个什么东西,而且应用场景也是很重要的,那就是你真真切切的碰到了这个问题,你必须解决。

想象自己是一个设计师,写了两个项目A和B,这时候项目A中的某些功能需要依赖项目B中的某些类,那么要如何维系这种依赖关系呢?

可以将B项目打成jar包,然后在A项目的Library下导入B的jar文件,这样,A项目就可以调用B项目中的某些类了。  
但这样做有几个缺陷,一是如果在开发过程中,发现B中的bug,则必须将B项目修改好,并重新将B打包并对A项目进行重编译操作。二是如果在完成A项目的开发后,为了保证A的正常运行,就需要依赖B(就像在使用某个jar包时必须依赖另外一个jar一样),这时可以选择将B打包入A中,或者将B也发布出去,等别人需要用A时,告诉开发者,想要用A就必须在导入Bjar包。但是两个都很麻烦,前者可能造成资源的浪费(比如,开发者可能正在开发依赖B的其它项目,B已经存储到本地了,在导入A的jar包的话,就有了两个B的jar),后者是我们常遇到的,找各种jar包,非常麻烦。 

此时Maven应运而生,如上,几行依赖代码便解决问题,

作为我这种大三学生,学校课程不开设前端,后端课程,在学校,我们只会c、java、基本的数据结构、计组、计网,有谁知道Maven啊,又有谁知道Spring啊,所以“一清二白”的没有项目经历的学生去理解概念性的东西就有点吃力不讨好了。

我始终认为每一个新东西出来,都是有道理的,一切都是需求在驱动。我们要做的就是抓住它的来龙去脉,剖析其本质。

posted @ 2021-11-23 11:15  嵌入式流才是最屌的  阅读(108)  评论(0编辑  收藏  举报