- 依赖库dependencies 是pom文件的核心,项目中用到的依赖包都要写进去
用到的标签有:groupId,artifactId和version(SNAPSHOT表示当前版本是一个不稳定的,尚处于开发中的版本) - scope标签表明了依赖的范围,几种赋值为:(目前我常用的就是
<scope>test</scope>
) - compile,默认值,表示这个被依赖的maven项目会参与项目编译,测试和运行,打包的话也会将这个项目打包进去,是一个比较强的依赖范围
- test,表示这个被依赖的maven项目仅参与测试代码的编译和运行,典型的是junit
- runtime,表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与,与compile相比,跳过编译而已
- provided,表示只有当JDK或者一个容器已经提供了这个依赖后才使用。例如,如果你开发了一个web应用,你可能在编译classpath的过程中需要可用的servlet API来编译一个servlet。但是你不会想要在打包好的war文件中包含这个servlet API。这个API会由你的应用服务器或者servlet容器来提供(比如tomcat)。也就是说,provided依赖在编译classpath是可用,他不是传递性的,也不会被打包
- system,与provided类似,但是你必须显式的提供一个本地jar包的路径(systemPath)
- build编译部分:
finalName:项目最终编译生成的名字
defaultGoal:执行构建时默认的goal或phase,如jar:jar或者package等
plugins:给出构建过程中所用到的插件,常用的是maven-compiler-plugin
resources:存放的是项目的各种资源,最常见的就是.properties文件,用来定义一些编译时用到的变量 - properties定义了一些常量,避免一些重复的东西,比如引入spring各种依赖包时,可以统一配置其version:
<properties>
<spring.version>5.2.4.RELEASE</spring.version>
</properties>
则spring的所有依赖包版本则可以写为:<version>${spring.version}</version>
- spring相关依赖包:
Spring Core:Spring的核心工具包,是其他组件的基本核心
Spring Beans:Spring IOC的基础实现,是所有应用都要用到的,包含访问配置文件、创建和管理bean等。
Spring Context:在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。
Spring JDBC:对JDBC 数据访问进行封装
Spring JMS:Java消息服务
Spring test:对JUNIT等测试框架的简单封装
Spring tx:为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。
Spring web:包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
Spring webmvc:包含SpringMVC框架相关的所有类。包括框架的servlets,web MVC框架、控制器和视图支持。
Spring webmvc portlet:Spring MVC的增强
Spring websocket:提供 Socket通信, web端的推送功能
Spring ibatis:对iBATIS SQL Maps的支持
图中可以简单认为将spring分为5个部分:core、aop、data access、web、test,图中每个圆角矩形都对应相应jar包,如果在maven中配置,所有这些jar的“groupId”都是“org.springframework”,每个jar有一个不同的“artifactId”,官方给出总共20个JAR包。
参考:
pom文件解析spring相关依赖包spring framework体系结构及模块jar依赖关系