下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

编程语言我们一起走进Maven——知己知彼

作者:泰斗贤若如     来源: 泰斗贤若如点击数:1123发布时间: 2020-03-12 10:01:34

标签: 编程语言java开发

大神带你学编程,欢迎选课

我们一起走进Maven——知己知彼。在过去的几十年间,大量的编程语言被发明、被取代、被修改或组合在一起。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是,编写程序的初衷其实也各不相同;新手与老手之间技术的差距非常大,而且有许多语言对新手来说太难学;还有,不同程序之间的运行成本(runtime cost)各不相同。

乍一看,Maven看起来有很多东西,但简而言之,Maven试图将模式应用于项目的构建基础架构,以便通过提供使用最佳实践的明确路径来提高理解力和生产力。

编程语言我们一起走进Maven——知己知彼_编程语言_java_开发 _课课家 什么是Maven?

乍一看,Maven看起来有很多东西,但简而言之,Maven试图将模式应用于项目的构建基础架构,以便通过提供使用最佳实践的明确路径来提高理解力和生产力。Maven本质上是一个项目管理和理解工具,因此提供了一种帮助管理的方法:

  • 构建
  • 文档
  • 报告
  • 依赖
  • 供应链管理系统
  • 发布
  • 分配

2.Maven的哲学

Maven通常被许多人认为是构建工具。很多来到Maven的人最初都熟悉Ant,所以它是一个自然的联想,但Maven不仅仅是一个构建工具,而不仅仅是Ant的替代品。Maven与Ant完全不同。Ant只是一个工具箱,而Maven则是关于模式的应用,以实现显示可见性,可重用性,可维护性和可理解性的基础结构。

如果没有这些特征,多个人将很有可能在项目上一起高效地工作。没有可见性,个人不太可能知道另一个人已经完成了什么,因此很有可能有用的代码不会被重用。如果不重用代码,则很难创建可维护的系统。当每个人都在不断努力寻找构成项目的所有这些不同点点的地方时,任何人都很难理解整个项目。因此,您最终会遇到孤岛效应,共享知识的衰退以及团队成员之间相应程度的挫折感。当流程对每个人都不以相同的方式工作时,这是一种自然的影响。

Maven诞生于非常实际的愿望,即以相同的方式在Apache工作。因此,开发人员可以在这些项目之间自由移动,通过了解其中一个项目的工作方式,清楚地了解它们的工作原理。

如果开发人员花时间了解一个项目是如何构建它的,那么当他们转移到下一个项目时,他们就不必再次经历这个过程。同样的想法扩展到测试,生成文档,生成指标和报告,测试和部署。所有项目都具有足够的相同特征,了解Maven试图利用其一般的项目管理方法。在很高的层面上,所有项目都需要构建,测试,打包,记录和部署。当然,上述每个步骤都有无限的变化,但是这种变化仍然发生在明确定义的路径的范围内,而Maven试图以明确的方式向每个人呈现这条路径。明确路径的最简单方法是为人们提供一组模式,这些模式可以由项目中的任何人共享。

拉尔夫·约翰逊和唐·罗伯茨在“进化框架模式”中最喜欢的一句话:

人们通过从具体例子中概括出来来发展抽象。在没有实际开发运行系统的情况下,每次尝试在纸上确定正确的抽象都是注定要失败的。没有人那么聪明。框架是一种可重用的设计,因此您可以通过查看它应该是设计的东西来开发它。您看到的示例越多,您的框架就越通用。

我真的不知道最终的结果是什么样的,我只知道必须有更好的方法。但首先我知道我想:

  • 项目的模型,以便您可以在一个地方查找与项目相关的所有内容
  • 一个标准的目录结构,所以你不必去寻找图书馆,资源和文档

3、举例理解

其实上面的都是官方语言,对我这种理解能力不强的人其实举例子更合适:

假如你正在Eclipse下开发两个java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢?

很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入jar包即可。所以这里也如此,可以将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就不一样了)

我们开发一个项目,或者做一个小demo,比如用SSH框架,那么我们就必须将SSH框架所用的几十个依赖的jar包依次找出来并手动导入,超级繁琐。

上面两个问题的描述,其实都属于项目与项目之间依赖的问题[A项目使用SSH的所有jar,就说A项目依赖SSH],人为手动的去解决,很繁琐,也不方便,所以使用maven来帮我们管理

Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.XML文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了,怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。

所以,根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包,在此之前我们就必须了解如何创建maven项目,maven项目的结构是怎样,与普通java,web项目的区别在哪里,还有如何配置pom.xml获取到对应的jar包等等

pom.xml获取junit的jar包的编写

为什么通过groupId、artifactId、version三个属性就能定位一个jar包?

加入上面的pom.xml文件属于A项目,那么A项目肯定是一个maven项目,通过上面这三个属性能够找到junit对应版本的jar包,那么junit项目肯定也是一个maven项目,junit的maven项目中的pom.xml文件就会有三个标识符,比如像下图这样,然后别的maven项目就能通过这三个属性来找到junit项目的jar包了。所以,在每个创建的maven项目时都会要求写上这三个属性值的。

看完上面这些再看看我绘制的图,估计能理解个八九不离十:

编程语言往往使程序员能够比使用机器语言更准确地表达他们所想表达的目的。对那些从事计算机科学的人来说,懂得程序设计语言是十分重要的,因为在当今所有的计算都需要程序设计语言才能完成。

赞(11)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程