1.什么是Maven?乍一看,Maven看起来像很多东西,但简而言之,Maven试图将模式应用于项目的构建基础结构,以便通过提供通向最佳实践的清晰路径来提高理解力和生产力。Maven本质上是一个项目管理和理解工具,因此提供了一种方法来帮助管理:BuildDocumentationReportDependencySupplyChainManagementSystemPublishDistribution2.Maven'sPhilosophyMaven通常被许多人认为是一个构建工具。很多来到Maven的人最初都熟悉Ant,因此这是一种自然的联想,但Maven不仅仅是一个构建工具,而不仅仅是Ant的替代品。Maven与Ant完全不同。Ant只是一个工具箱,而Maven是关于模式的应用,以实现显示可见性、可重用性、可维护性和可理解性的基础设施。如果没有这些特征,多人就很有可能能够在一个项目中高效地合作。没有可见性,一个人就不太可能知道另一个人已经完成了什么,因此有用的代码很可能不会被重用。不重用代码就很难创建可维护的系统。当每个人都在不断地试图弄清楚构成项目的所有这些不同部分在哪里时,任何人都很难理解整个项目。因此,您最终会陷入孤岛、共享知识的衰退以及团队成员之间相应程度的挫败感。当流程对每个人的工作方式不同时,这是一种自然影响。Maven的诞生源于一种非常实际的愿望,即以与Apache相同的方式工作。因此,开发人员可以在这些项目之间自由移动,通过了解其中一个项目的工作原理,清楚地了解它们的工作原理。如果开发人员花时间了解一个项目是如何构建它的,那么他们在继续下一个项目时就不必再次经历这个过程。同样的想法延伸到测试、生成文档、生成指标和报告、测试和部署。所有项目都具有足够多的相同特征,可以理解Maven正在尝试利用其通用方法进行项目管理。在非常高的层次上,所有项目都需要构建、测试、打包、记录和部署。当然,上述每个步骤都有无限的变化,但这种变化仍然发生在定义良好的路径范围内,Maven试图以明确的方式呈现给大家。阐明路径的最简单方法是为人们提供一组可以由项目中的任何人共享的模式。RalphJohnson和DonRoberts在“EvolutionaryFramingPatterns”中最喜欢的一句话:人们通过从具体例子中概括来发展抽象。在没有实际开发运行系统的情况下,在纸上确定正确抽象的每一次尝试都注定要失败。没有人那么聪明。框架是一种可重用的设计,因此您可以通过查看它应该是什么来开发它。你看到的例子越多,你的框架就越通用。我真的不知道最终结果是什么样子,我只知道一定有更好的方法。但首先我知道我想要什么:一个项目模型,这样你就可以在一个地方找到与项目相关的所有内容一个标准的目录结构,这样你就不必寻找库、资源和文档官方语言,适合喜欢的人理解能力不强的我,举个例子其实更合适:如果你在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包,就会有两个jarB)的,后者是我们经常遇到的。找各种jar包很麻烦(maven不一样)。我们开发一个项目,或者做一个小demo,比如使用SSH框架,那我们就必须安装SSH框架所用的几十个依赖jar包,一个一个找出来,手动导入,超级繁琐。上面两个问题的描述其实是项目之间的依赖问题[AprojectusesallthejarsofSSH,所以说AprojectdependsonSSH],手动解决很麻烦不方便,所以用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获取junitjar包。为什么可以通过groupId、artifactId、version三个属性定位到一个jar?包裹?上面的pom.xml文件属于项目A,那么项目A一定是maven项目,通过上面三个属性可以找到junit版本对应的jar包,那么junit项目也一定是maven项目,junit的maven项目文件中的pom.xml文件会有三个标识,如下图,然后其他maven项目可以通过这三个属性来找到junit项目的jar包。所以这三个属性值都要求在每个创建的maven项目中都写上。看完上面再看我画的图,估计也能理解一样的:
