(转)淘淘商城系列——使用maven构建工程
http://blog.csdn.net/yerenyuan_pku/article/details/72669269
开发工具和环境
这里,我统一规范一下淘淘商城的开发工具和环境,如下:
- Eclipse 4.5.2(Mars2),其自带maven插件,需要手工安装svn插件,但我提供的这个eclipse,svn插件已经搭好了
- Maven-3.3.9(开发工具自带)
- Tomcat-7.0.75(Maven Tomcat Plugin)
- JDK 1.7
- MySQL 5.7.17
- Nginx 1.8.0
- Redis 3.0.0
- Win10 操作系统
- SVN(版本管理工具)
工程搭建
使用maven的好处
- 项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。
- 依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。
- 管理Jar包的依赖。
- 管理工程之间的依赖关系,即可使用Maven依赖其他的工程。
后台工程搭建分析
Maven常见的打包方式有:
- jar
jar工程,很显然就是pom工程的子工程,由pom工程来管理。 - war
war工程是一个web工程,是可以直接放到tomcat下运行的工程。 - pom
pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理,它是一个聚合工程。其实说白了它只有一个pom.xml文件,一般是作为父工程出现的,只是定义了一些依赖、插件、还有一些版本号等等。
后台管理系统的工程使用Maven构建工具创建,工程之间的依赖关系如下:
-
taotao-parent:父工程,其打包方式是pom,主要管理jar包的版本号。项目中的所有工程都应该继承父工程。
- taotao-common:存放一些通用的工具类、通用的pojo。其打包方式为jar,被其他的工程所依赖。
-
taotao-manager:服务层工程,又称之为聚合工程或pom工程。
- taotao-manager-pojo:这是一个独立的模块,其打包方式是jar。
- taotao-manager-dao:这是一个独立的模块,其打包方式是jar。
- taotao-manager-interface:打包方式是jar。
- taotao-manager-service:打包方式是war,主要为了方便部署。
-
taotao-manager-web:表现层工程,打包方式是war。
搭建taotao-parent工程
在这里我使用maven来搭建taotao-parent这个父工程,taotao-parent本身就是一个父工程,所以它不需要继承其他的工程,我们主要在父工程中定义依赖jar包的版本和Maven插件的版本信息。注意,此处我使用的maven是apache-maven-3.3.9这个版本。
首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,如下:
在输入框中输入maven,并选择Maven Project,如下:
点击【Next】,勾选Create a simple project复选框,如果你不打上这个勾,它会让你选择一个骨架,但骨架里面没有pom这个模板的。
点击【Next】,出现如下对话框,在该对话框中定义maven工程的坐标,如下:
最后点击【Finish】,可发现新创建的taotao-parent工程为:
可以看出这个pom文件内容很简单,就这么几个——当前这个工程的坐标以及其打包方式。现在我们需要在这个父工程里面管理jar包的版本号,怎样管理jar包的版本号呢?那就需要在pom文件中进行配置了。下面我提供一个比较全面的pom.xml文件,文件内容可能有点多,初次接触这种商城大项目的人是不可能一蹰而就写完的,肯定是在编写项目的过程中,需要用到哪个jar包,就在pom.xml文件进行配置。
<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.taotao</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 集中定义依赖版本号 -->
<properties>
<junit.version>4.12</junit.version>
<spring.version>4.2.4.RELEASE</spring.version>
<mybatis.version>3.2.8</mybatis.version>
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<mybatis.paginator.version>1.2.15</mybatis.paginator.version>
<mysql.version>5.1.32</mysql.version>
<slf4j.version>1.6.4</slf4j.version>
<jackson.version>2.4.2</jackson.version>
<druid.version>1.0.9</druid.version>
<httpclient.version>4.3.5</httpclient.version>
<jstl.version>1.2</jstl.version>
<servlet-api.version>2.5</servlet-api.version>
<jsp-api.version>2.0</jsp-api.version>
<joda-time.version>2.5</joda-time.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-io.version>1.3.2</commons-io.version>
<commons-net.version>3.3</commons-net.version>
<pagehelper.version>3.4.2-fix</pagehelper.version>
<jsqlparser.version>0.9.1</jsqlparser.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<jedis.version>2.7.2</jedis.version>
<solrj.version>4.10.3</solrj.version>
<dubbo.version>2.5.3</dubbo.version>
<zookeeper.version>3.4.7</zookeeper.version>
<zkclient.version>0.1</zkclient.version>
<activemq.version>5.11.2</activemq.version>
<freemarker.version>2.3.23</freemarker.version>
<quartz.version>2.2.2</quartz.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- 时间操作组件 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
<!-- Apache工具组件 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${commons-net.version}</version>
</dependency>
<!-- Jackson Json处理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</