先说项目使用Maven的好处
1、项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。 2、依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。 A)管理依赖的jar包 B)管理工程之间的依赖关系。
传统工程结构
Maven管理的工程结构:
不使用maven:工程部署时需要手动复制jar包。完成工程构建。非常繁琐。 使用maven进行工程构建: 使用maven可以实现一步构建。
1.创建springmvc-parent
1.1创建maven工程
1.2修改pom文件
<properties>
<junit.version>4.12
</junit.version>
<spring.version>4.1.3.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>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>joda-time
</groupId>
<artifactId>joda-time
</artifactId>
<version>${joda-time.version}
</version>
</dependency>
<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>
<dependency>
<groupId>com.fasterxml.jackson.core
</groupId>
<artifactId>jackson-databind
</artifactId>
<version>${jackson.version}
</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents
</groupId>
<artifactId>httpclient
</artifactId>
<version>${httpclient.version}
</version>
</dependency>
<dependency>
<groupId>junit
</groupId>
<artifactId>junit
</artifactId>
<version>${junit.version}
</version>
<scope>test
</scope>
</dependency>
<dependency>
<groupId>org.slf4j
</groupId>
<artifactId>slf4j-log4j12
</artifactId>
<version>${slf4j.version}
</version>
</dependency>
<dependency>
<groupId>org.mybatis
</groupId>
<artifactId>mybatis
</artifactId>
<version>${mybatis.version}
</version>
</dependency>
<dependency>
<groupId>org.mybatis
</groupId>
<artifactId>mybatis-spring
</artifactId>
<version>${mybatis.spring.version}
</version>
</dependency>
<dependency>
<groupId>com.github.miemiedev
</groupId>
<artifactId>mybatis-paginator
</artifactId>
<version>${mybatis.paginator.version}
</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper
</groupId>
<artifactId>pagehelper
</artifactId>
<version>${pagehelper.version}
</version>
</dependency>
<dependency>
<groupId>mysql
</groupId>
<artifactId>mysql-connector-java
</artifactId>
<version>${mysql.version}
</version>
</dependency>
<dependency>
<groupId>com.alibaba
</groupId>
<artifactId>druid
</artifactId>
<version>${druid.version}
</version>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-context
</artifactId>
<version>${spring.version}
</version>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-beans
</artifactId>
<version>${spring.version}
</version>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-webmvc
</artifactId>
<version>${spring.version}
</version>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-jdbc
</artifactId>
<version>${spring.version}
</version>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-aspects
</artifactId>
<version>${spring.version}
</version>
</dependency>
<dependency>
<groupId>jstl
</groupId>
<artifactId>jstl
</artifactId>
<version>${jstl.version}
</version>
</dependency>
<dependency>
<groupId>javax.servlet
</groupId>
<artifactId>servlet-api
</artifactId>
<version>${servlet-api.version}
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>javax.servlet
</groupId>
<artifactId>jsp-api
</artifactId>
<version>${jsp-api.version}
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>commons-fileupload
</groupId>
<artifactId>commons-fileupload
</artifactId>
<version>${commons-fileupload.version}
</version>
</dependency>
<dependency>
<groupId>redis.clients
</groupId>
<artifactId>jedis
</artifactId>
<version>${jedis.version}
</version>
</dependency>
<dependency>
<groupId>org.apache.solr
</groupId>
<artifactId>solr-solrj
</artifactId>
<version>${solrj.version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>${project.artifactId}
</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins
</groupId>
<artifactId>maven-resources-plugin
</artifactId>
<version>2.7
</version>
<configuration>
<encoding>UTF-8
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins
</groupId>
<artifactId>maven-compiler-plugin
</artifactId>
<version>3.2
</version>
<configuration>
<source>1.7
</source>
<target>1.7
</target>
<encoding>UTF-8
</encoding>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven
</groupId>
<artifactId>tomcat7-maven-plugin
</artifactId>
<version>2.2
</version>
</plugin>
</plugins>
</pluginManagement>
</build>
1.3 将spring-parent安装到本地仓库
2.创建spring-common
注意:我们这里创建common项目的用途是用来放其他工程需要用到的通用组件、工具类、以及单元测试等等,可以让整个结构体系看起来更加清晰,明确
2.1 创建工程(由于我之前建过这个项目所以我这里只是演示下)
2.2修改pom文件
<dependencies>
<dependency>
<groupId>joda-time
</groupId>
<artifactId>joda-time
</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons
</groupId>
<artifactId>commons-lang3
</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons
</groupId>
<artifactId>commons-io
</artifactId>
</dependency>
<dependency>
<groupId>commons-net
</groupId>
<artifactId>commons-net
</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core
</groupId>
<artifactId>jackson-databind
</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents
</groupId>
<artifactId>httpclient
</artifactId>
</dependency>
<dependency>
<groupId>junit
</groupId>
<artifactId>junit
</artifactId>
<scope>test
</scope>
</dependency>
<dependency>
<groupId>org.slf4j
</groupId>
<artifactId>slf4j-log4j12
</artifactId>
</dependency>
</dependencies>
2.3 更新工程
右键项目->Maven->Update Project Configuration
3.创建spring-manager
注意这是个pom工程
3.1修改pom文件
<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>
<parent>
<groupId>com.yanl
</groupId>
<artifactId>springmvc-parent
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</parent>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
<packaging>pom
</packaging>
<description>聚合工程,包含4个模块三个jar模块entity,mapper,service以及war模块controller
</description>
<dependencies>
<dependency>
<groupId>com.yanl
</groupId>
<artifactId>spring-common
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</dependency>
</dependencies>
<modules>
<module>spring-manager-entity
</module>
<module>spring-manager-mapper
</module>
<module>spring-manager-service
</module>
<module>spring-manager-web
</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven
</groupId>
<artifactId>tomcat7-maven-plugin
</artifactId>
<configuration>
<port>8080
</port>
<path>/
</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
4.创建spring-manager-entity
注意:这是一个在manager里面的模块所以右键spring-manager项目选择新建项目的Maven Module
5.创建spring-manager-mapper
5.1修改pom文件
<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>
<parent>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>spring-manager-mapper
</artifactId>
<dependencies>
<dependency>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager-entity
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>org.mybatis
</groupId>
<artifactId>mybatis
</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis
</groupId>
<artifactId>mybatis-spring
</artifactId>
</dependency>
<dependency>
<groupId>com.github.miemiedev
</groupId>
<artifactId>mybatis-paginator
</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper
</groupId>
<artifactId>pagehelper
</artifactId>
</dependency>
<dependency>
<groupId>mysql
</groupId>
<artifactId>mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba
</groupId>
<artifactId>druid
</artifactId>
</dependency>
</dependencies>
</project>
6.创建spring-manager-service
6.1修改pom文件
<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>
<parent>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>spring-manager-service
</artifactId>
<description>service模块
</description>
<dependencies>
<dependency>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager-mapper
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-context
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-beans
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-webmvc
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework
</groupId>
<artifactId>spring-aspects
</artifactId>
</dependency>
</dependencies>
</project>
7.创建spring-manager-web(这个就是我们的前端控制器controller)
7.1修改pom文件
<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>
<parent>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>spring-manager-web
</artifactId>
<packaging>war
</packaging>
<dependencies>
<dependency>
<groupId>com.yanl
</groupId>
<artifactId>spring-manager-service
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>jstl
</groupId>
<artifactId>jstl
</artifactId>
<version>${jstl.version}
</version>
</dependency>
<dependency>
<groupId>javax.servlet
</groupId>
<artifactId>servlet-api
</artifactId>
<version>${servlet-api.version}
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>javax.servlet
</groupId>
<artifactId>jsp-api
</artifactId>
<version>${jsp-api.version}
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>commons-fileupload
</groupId>
<artifactId>commons-fileupload
</artifactId>
<version>${commons-fileupload.version}
</version>
</dependency>
</dependencies>
</project>
至此我们的工程建立完成,我们需要测试这个工程能不能用还需要配置如下
8.配置tomcat插件
运行web工程需要添加一个tomcat插件。插件必须添加到spring-manager工程中。因为spring-manager是聚合工程。在运行时需要把子工程聚合到一起才能运行。
上面在创建spring-manager时我已经配置了,这里在配下,提醒。
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven
</groupId>
<artifactId>tomcat7-maven-plugin
</artifactId>
<configuration>
<port>8080
</port>
<path>/
</path>
</configuration>
</plugin>
</plugins>
</build>
9.运行聚合工程
看到如下,说明运行成功 然后打开http://localhost:8080/你会看到
10.1.关于mybatis分页插件pagehelper的问题
有关分页插件请看我之前写过的一篇pagehelper文章。
10.2 Java编译插件
10.3 Build时控制台报错,一般是提示parent,common没有安装,你右键这两个项目安装下在运行spring-manager就可以了。
10.4 需要用到的仓库我上传到我的资源里面了(由于文件太大,我传百度网盘了,传送门 http://pan.baidu.com/s/1cmrIgu),如果maven下载不了直接将这个仓库覆盖你自己的本地仓库,一般本地仓库在C盘用户.m2文件夹下,祝你成功。
10.5 需要用到的仓库我上传到我的资源里面了(由于文件太大,我传百度网盘了,传送门 http://pan.baidu.com/s/1cmrIgu),如果maven下载不了直接将这个仓库覆盖你自己的本地仓库,一般本地仓库在C盘用户.m2文件夹下,祝你成功。