<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.deng</groupId>
<artifactId>showlan</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>showlan</name>
<url>http://maven.apache.org</url>
<!-- 可以使用${标签名}来使用在<properties>标签里所定义的<标签>值</标签> -->
<properties>
<org.springframework-version>4.0.6.RELEASE</org.springframework-version>
<java.version>1.7</java.version>
<env>local</env>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skipTest>true</skipTest>
</properties>
<dependencies>
<!-- 主要提供HTTP请求相关的核心功能,还有远程调用如Hessian,WS等 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- spring中的一个模块,对jdbc api做了封装,简化了jdbc的代码(比如不用考虑获取连接和关闭连接了。) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- web-mvc主要是一些view层的核心封装,提供各前端技术及标签支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context
为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类, JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如
Velocity、FreeMarker、JasperReports
集成的类,以及校验Validation方面的相关类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support
含支持UI模版(Velocity,FreeMarker,JasperReports),邮件服务,脚本服务(JRuby),缓存Cache(EHCache),
任务计划Scheduling(uartz)方面的类。外部依赖spring-context, (spring-jdbc, Velocity, FreeMarker,
JasperReports, BSH, Groovy, JRuby, Quartz, EHCache) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx 事物控制 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop
AOP(Aspect Oriented Programming),即面向切面编程(也叫面向方面编程,面向方法编程)。
其主要作用是,在不修改源代码的情况下给某个或者一组操作添加额外的功能。
像日志记录,事务处理,权限控制等功能,都可以用AOP来“优雅”地实现,
使这些额外功能和真正的业务逻辑分离开来,软件的结构将更加清晰。
AOP是OOP的一个强有力的补充。 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework-version}</version>
<scope>compile</scope>
</dependency>
<!-- http://commons.apache.org/codec
在实际的应用中,我们经常需要对字符串进行编解码,Apache Commons家族中的Commons Codec就提供了一些公共的编解码实现,
比如Base64, Hex, MD5,Phonetic and URLs等等。 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<!-- http://commons.apache.org/collections/download_collections.cgi
为Java标准的Collections API提供了相当好的补充。在此基础上对其常用的数据结构操作进行了很好的封装、抽象和补充。
保证性能的同时大大简化代码。 -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
<scope>compile</scope>
</dependency>
<!-- 通过在bean的属性上打上annotation @NotNull @Max等注解来对上传数据进行验证的依赖。 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.2.Final</version>
<scope>compile</scope>
</dependency>
<!-- servlet的相关依赖,这是3.0之后的地址。 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency>
<!-- 功能汇总:FileUtil:快速读写文件;文件,目录拷贝和删除,创建多级目录,计算checksum,比较文件内容。
IOUtil:关闭流,从流中读取数据,将数据写入流,流之间的数据拷贝。
目录和文件监听。 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<scope>compile</scope>
</dependency>
<!-- 文件上传下载相关依赖 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
<scope>compile</scope>
</dependency>
<!-- 日志相关依赖 -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
<scope>compile</scope>
</dependency>
<!-- Spring Data Redis是Spring Data大家族的一部分,它提供了通过简单的配置就可以使Spring应用程序操作Redis。
也提供了和仓库交互的低级和高级的抽象,以便用户不考虑基础设备的影响。 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,
并且它支持 HTTP 协议最新的版本和建议。 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
<scope>compile</scope>
<!-- 当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B的依赖时,可以排除对C的依赖。 -->
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
<exclusion>
<artifactId>commons-codec</artifactId>
<groupId>commons-codec</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- httpcore是对http协议的基础封装的一套组件
可以用它来建立客户端,代理,服务端Http服务
支持同步异步服务
一些列支持阻塞和非阻塞IO模型 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.3</version>
<scope>compile</scope>
</dependency>
<!-- 基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.20</version>
<scope>compile</scope>
</dependency>
<!-- 访问设备的类型检查 -->
<dependency>
<groupId>org.springframework.mobile</groupId>
<artifactId>spring-mobile-device</artifactId>
<version>1.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- myBatis相关依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
<!-- MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。
使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。
这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。
而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。
最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
<!-- Mybatis的一个插件,PageHelper,非常方便mybatis分页查询。 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.2</version>
</dependency>
<!-- java对象和json相互转化,有jackson-core-asl、jackson-mapper-asl -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
<scope>compile</scope>
</dependency>
<!-- 在ORM的概念大行其道之际,JavaEE平台也不得不做出适当调整,直接在平台层提供了对象/关系映射机制JPA,并结合了其重要的Entity JavaBean。 -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
<scope>compile</scope>
</dependency>
<!-- Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.13</version>
<scope>compile</scope>
</dependency>
<!-- 开发中常用的一些工具如:
StringUtils:该类主要提供对字符串的操作,对null是安全的!
ObjectUtils:主要是对null进行安全处理
SystemUtils:主要获取一些系统属性,例如工作目录等等。
DateUtils/CalendarUtils:主要提供了对日期的操作。
StopWatch:提供秒表的暂停,计时等功能!
qualsBuilder/HashCodeBuilder提供了方便的方法来覆盖equals() 和hashCode()方法
以Range结尾的类主要提供一些范围的操作,包括判断某些字符,数字等是否在这个范围以内
ArrayUtils 提供了数组的复制,查找,获取子数组,反转等功能-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
<scope>compile</scope>
</dependency>
<!-- aspectj框架支持的包 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.2</version>
<scope>compile</scope>
</dependency>
<!-- 数据库连接的相关jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
<scope>compile</scope>
</dependency>
<!-- 动态代理相关依赖 -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
<scope>compile</scope>
</dependency>
<!-- 验证码相关依赖 -->
<dependency>
<groupId>com.github.napp-com</groupId>
<artifactId>kaptcha</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<!-- JSON协议使用方便,越来越流行,JSON的处理器有很多,fastjson就是其中一种。
FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架。
FastJson速度快,无论序列化和反序列化,都是当之无愧的fast
功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
零依赖(没有依赖其它任何类库) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.31</version>
<scope>compile</scope>
</dependency>
<!-- Apache commons-pool2类库是对象池技术的一种具体实现,它的出现是为了解决频繁的创建和销毁对象带来的性能损耗问题,
原理就是建立一个对象池,池中预先生成了一些对象,需要对象的时候进行租借,用完后进行归还,对象不够时灵活的自动创建,
对象池满后提供参数控制是否阻塞还是非阻塞响应租借。 -->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.4</version>
<scope>compile</scope>
</dependency>
<!-- Dozer是一个JavaBean映射工具库。
它支持简单的属性映射,复杂类型映射,双向映射,隐式显式的映射,以及递归映射。
它支持三种映射方式:注解、API、XML。 -->
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.3.2</version>
<scope>compile</scope>
</dependency>
<!-- Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。
这个库是为了方便编码,并减少编码错误。
这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
<scope>compile</scope>
</dependency>
<!-- Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,
在将JavaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁索。
Xstream也可以将JavaBean序列化成Json或反序列化,使用非常方便。 -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.8</version>
<scope>compile</scope>
</dependency>
<!-- 这里指的复杂对象(是指对象里面存在cycle引用)和json数据互转 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.5</version>
<scope>compile</scope>
</dependency>
<!-- 用来读取不同格式的Excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11-beta1</version>
</dependency>
<!-- 单元测试相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.0.6.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- 为java提供的简单日志Facade。Facade:门面,更底层一点说就是接口。他允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统。
更直观一点,slf4j是个数据线,一端嵌入程序,另一端链接日志系统,从而实现将程序中的信息导入到日志系统并记录。 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
<scope>compile</scope>
</dependency>
<!-- 把jcl实现的日志输出重定向到 SLF4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
</dependency>
<!-- 将使用log4j日志框架输出的日志路由到SLF4J上 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
</dependency>
<!-- 数据校验相关依赖 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
<!-- 在logback中只要有三个JAR包:Logback-classic.jar,logback-core.jar,logback-access.jar,
其中 logback.core是另外两个JAR包的基础,而logback-classic.jar包是log4j的改善版本,用于帮助打印日志,
而logback-access.jar包是通过互联网访问日志时需要的JAR包。 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
<scope>compile</scope>
</dependency>
<!-- logback-ext-spring这个jar包是为了和spring一起使用的。 -->
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.1</version>
<scope>compile</scope>
</dependency>
<!-- 测试单元相关依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>compile</scope>
</dependency>
<!-- Mockito是mocking框架,它让你用简洁的API做测试。 -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<!-- 在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
<scope>provided</scope>
</dependency>
<!--PDF操作-->
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.2.1</version>
</dependency>
<!--快捷通 支付渠道 依赖JAR包-公共包-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15</artifactId>
<version> 1.45</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15</artifactId>
<version> 1.45</version>
</dependency>
<!--快捷通 支付渠道 依赖JAR包-快捷通提供的第三方JAR包,需要导入本地Maven仓库-->
<dependency>
<groupId>com.biz.kjt</groupId>
<artifactId>gateway-common-0.0.1-SNAPSHOT</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.biz.kjt</groupId>
<artifactId>gateway-common-0.0.1-SNAPSHOT-sources</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.biz.kjt</groupId>
<artifactId>gateway-domain-0.0.1-SNAPSHOT</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.biz.kjt</groupId>
<artifactId>gateway-domain-0.0.1-SNAPSHOT-sources</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<!-- 七牛云 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.11</version>
</dependency>
</dependencies>
<!-- 全局配置,针对整个项目的所有情况都有效 -->
<build>
<!-- 这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在
最终的打包文件里。 -->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/resources_${env}</directory>
<filtering>true</filtering>
</resource>
</resources>
<!-- 插件 -->
<plugins>
<!-- jetty运行插件 -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.9.v20150224</version>
<configuration>
<httpConnector>
<port>8081</port>
</httpConnector>
<scanIntervalSeconds>0</scanIntervalSeconds>
<systemProperties>
<systemProperty>
<name>org.eclipse.jetty.LEVEL</name>
<value>DEBUG</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
<!-- 为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,
maven-resources-plugin则用来处理资源文件。 -->
<!-- maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,
它就会用maven-compiler-plugin默认的jdk版本来进行处理,这样就容易出现版本不匹配,以至于可能导致编译不通过的问题。 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>cer</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<!-- 打包插件 -->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>
war
</goal>
</goals>
<configuration>
<classifier>
${env}
</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prod</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>prod</env>
</properties>
</profile>
<profile>
<id>prod_fdbx</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>prod_fdbx</env>
</properties>
</profile>
<profile>
<id>prod_zx</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>prod_zx</env>
</properties>
</profile>
</profiles>
</project>