ssm---->pom文件解析
文章目录
一.dependencies结构
学习Spring Maven构建的时候,经常会在pom.xml文件里引入以下结构的代码
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${srping.version}</version>
</dependency>
最后他们会整合成唯一资源的地址:org.springframework:spring-test-${srping.version}
1.里面的标签都是什么呢?
-
dependency:翻译过来=依赖
-
groupId: the unique identifier of the organization or group that created the project —> (创建项目的组织或组织的唯一标识符)
实际对应Java的包的结构,是main目录里java的目录结构|定义项目输入哪个组
例子:如果有个公司叫做黑客帝国,正在做一个叫做超级病毒的项目,那我们就可以定义为***“com.hkdg.cjbd”***
-
artifactId: unique base name of the primary artifact being generated by this project -->(由该项目生成的主要工件的唯一基本名称) | 简单理解为:项目的唯一表示符
定义了当前maven项目在组的唯一ID
例子:spring项目下又分为多个module
spring–mvc spring–boot spring–ioc
-
version:指定了当前myapp项目的当前版本
小知识点:
举例:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
-
javax:
java和javax都是Java的API(Application Programming Interface)包,java是核心包,javax的x是extension的意思,也就是扩展包。java类库是java发布之初就确定了的基础库,而javax类库则是在上面增加的一层东西,就是为了保持版本兼容要保存原来的,但有些东西有了更好的解决方案,所以,就加上些,典型的就是awt(Abstract Windowing ToolKit) 和swing
-
javaee-api:
Javaee:F
API:应用程序接口
各个依赖的作用:
1.Junit
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
<scope>test</scope>
-
junit:
1.JUnit是一个Java语言的单元测试框架。 2.JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具 3.JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了
-
作用:
1.引用juint的依赖,做单元测试
2.Javax
<!-- java ee包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
- javax:
java
和Javax
都是Java的API(Application programming Interface)的包,Java是核心包.javax的x是extension的意思,也就是扩展包 - javaee-api:
javaee
应用程序接口
3.SpringFrameWork(Package)
(1).spring-test
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-test: 对spring框架进行单元测试的依赖
(2).spring-core
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${srping.version}</version>
</dependency>
- spriing-core:这个jar 文件包含Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类
(3).spring-oxm
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-oxm : Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换
(4).spring-tx
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-oxm:为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理
(5).spring-jdbc
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-jdbc:对jdbc的简单封装
- spring-jdbc:含对Spring 对JDBC 数据访问进行封装的所有类
(6).spring-aop
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-aop:
- Spring的面向切面编程,提供AOP(面向切面编程)的实现
- spring-aop:在应用中使用Spring 的AOP 特性时所需的类和源码级元数据支持。使用基于AOP 的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包
(7).spring-context
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-context:在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持
- 这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类
(8).spring-context-support
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-context-support: Spring context的扩展支持,用于MVC方面。
- 这个jar文件包含支持UI模版(Velocity,FreeMarker,JasperReports),邮件服务,脚本服务(JRuby),缓存Cache(EHCache),任务计划Scheduling(uartz)方面的类
(9).spring-expression
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-expression:Spring表达式语言
(10).spring-orm
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-orm:整合第三方的orm实现,如hibernate,ibatis,jdo以及spring 的jpa实现
(11).spring-web
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-web: 包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类
(12).spring-webmvc
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${srping.version}</version>
</dependency>
- spring-webmvc:这个jar 文件包含Spring MVC 框架相关的所有类。包括框架的Servlets,Web MVC框架,控制器和视图支持。当然,如果某个应用使用了独立的MVC 框架,则无需这个JAR 文件里的任何类。
4.Mybatis(Package)
(1).mybatis
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
- mybatis:是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低
(2).mybatis-spring
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
- mybatis-spring: MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和
SqlSession
并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的DataAccessException
。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring
5.数据库驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
- mysql-connector-java:,mysql连接器
6.阿里巴巴连接池
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
- druid:Druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。
7.dbcp
<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
- commons-dbcp:这个工具包是用来提供数据库连接池服务
8.jstl
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
- jstl:标准标签库,JSP标准标识库,使用JSTL可实现JSP页面的逻辑处理; 可用于编写各种动态JSP页面
9.log4j
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
-
log4j:是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码
10.slf4j
- slf4j:Simple Logging Facade for Java,为java提供的简单日志Facade。Facade门面,更底层一点说就是接口。它允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统
(1).slf4j-api
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
- slf4j-api:本质就是一个接口定义
(2).slf4j-log4j12
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
- slf4j-log4j12:是log4j对slf4j日志接口的一种实现方案
11.Json
- json:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式
(1).fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.6</version>
</dependency>
- fastjson:是一个java类库,可以被用来把Java对象转换成Json方式.也可以把Json字符串转换成对应的Java对象.Fastjson可以作用于任何Java对象,包含没有源代码已存在的对象
(2).jackson-mapper-asl
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
- jackson-mapper-asl:java对象和json相互转化
12.上传组件包
- 组件(Component)是对数据和方法的简单封装
(1).commons-fileupload (英文翻译–文件上传)
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
- commons-fileupload:他是apache出品的文件上传组件,用来接收浏览器上传的组件,该组件有多个类组成
(2).commons-io
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
-
commons-io:
Common IO 是一个工具库,用来帮助开发IO功能 它包括6个主要部分
- Utility classes – 包括一些静态方法来执行常用任务
- Input –
InputStream
和Reader
实现 - Output –
OutputStream
和Writer
实现 - Filters – 多种文件过滤器实现(定义了
IOFileFilter
接口,同时继承了FileFilter
和FilenameFilter
接口) - 用于文件比较的多种
java.util.Comparatot
实现
(3).commons-codec
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
- commons-codec:是项目中用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64,URL,Soundx等等。不仅是编码,也可用于解码
13. build 标签
- 在Maven的pom.xml⽂件中,存在如下两种:
(1)全局配置(project build)
针对整个项⽬的所有情况都有效
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
...
<build>
<finalName>Test_Spring_SpringMVC_Mybatis</finalName>
</build>
...
</project>
- : build⽬标⽂件的名称,默认情况为 a r t i f a c t I d − {artifactId}- artifactId−{version}
(2)配置(profile build)
针对不同的profile配置
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
...
<profiles>
<profile>
<!– "Profile Build" contains a subset of "Project Build"s elements –>
<build>…</build>
</profile>
</profiles>
...
</project>