在不使用maven管理项目,直接使用IDE开发项目时,一个web项目中会涉及到很多技术,
比如struts2,hibernate,spring,mybatis等等,这个时候,我们就需要去各大官网下载不同版本
的lib文件,找到各种技术依赖的jar包,这样我们就需要花费大量的时间浏览网站寻找jar包,花大量时间
解决jar包的冲突,以及升级等问题。
在这种情况下,就急切的需要一个jar包规范,统一管理,不需要到处寻寻觅觅的找jar包,maven能很好
的帮我们解决这个问题,在maven中内置了一个*仓库(http://repo1.maven.org/maven2/),在*仓库中,
有着大部分主流技术的jar包,只需要配置maven的pom.xml文件,就可以轻松的从*仓库中获取jar包,
一旦项目稳定,pom.xml就不需要做多少修改,自然形成jar包的规范,一个人管理pom.xml文件即可,
让更多的人将心思都放在业务需求和研发功能上,无需为jar包升级和jar包冲突大费周章。
哪么项目如何通过pom.xml配置去*仓库(这里先不用考虑nexus)下载jar包?
在平面几何中,我们可以通过(x,y)坐标去确认平面上的某个点,maven中jar包寻找也是用类似
的坐标概念完成。
比如pom.xm中关于依赖jar包log4j的配置如下:
- <dependencies>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.15</version>
- </dependency>
- </dependencies>
groupId为项目分组,artifactId项目分组下的项目唯一标识,version为项目版本号。
如果在联网状态下,maven通过groupId:artifactId:version去*仓库寻找jar包,
并下载到本地仓库。
我们可以通过*仓库地址用浏览器访问*仓库:
http://repo1.maven.org/maven2/
然后根据pom.xml配置groupId先找到log4j,在根据artifactId找到log4j,最后根据version找到jar包并下载到本地:
依赖jar包下载的过程就是将手动下载变成自动下载,化繁为简,根据我们的pom.xml配置下载jar包,对jar包进行依赖管理。
当这些jar包下载到本地后,web项目使用时根据maven下的setting配置使用本地仓库,通过同样的方式在本地
寻找到jar包并使用。
当我们将项目打成jar,war等包时,maven会根据pom.xml中配置,将对应的jar包放到包中,
比如:web项目打完包后生成war包,pom.xml配置的jar包都放到xxx.war中WEB-INF/lib下,这样当web项目
在web容器(比如tomcat)中运行时,才能从WEB-IN/lib下引用依赖jar包代码。
比如: