首页 > 代码库 > 淘淘商城系列——使用maven构建工程
淘淘商城系列——使用maven构建工程
开发工具和环境
这里,我统一规范一下淘淘商城的开发工具和环境,如下:
- 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</artifactId> <version>${httpclient.version}