博客系统项目搭建

一.maven工程的好处

  1.一步构建

  maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。

  2.依赖管理

  maven为全世界的java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源软件。通过衍生工具,我们还能对其进行快速搜索,因此maven工程不用手动导入jar包,可以通过在pom.xml中定义坐标从中央仓库自动下载,方便并且不容易出错。

  3.maven的跨平台,可在window、linux上使用。

  4.maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司基本上都会考虑使用maven来构架项目。

二.工程搭建分析

  1.Maven的常见打包方式为:jar、war、pom三种方式。

  2.Pom工程一般都是作为父工程用来管理jar包的版本、maven插件的版本、统一的依赖管理。

  3.聚合工程:分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,聚合工程 打包方式pom。

  4.war工程一般是作为表现层(web层)打包方式。

三.工程搭建

  开发环境:eclipse-jee-oxygen-R-win32-x86_64

  Maven版本:3.3.9

  本地仓库默认位置:C:\Users\Administrator\.m2

  我修改本地仓库的位置为:E:\Users\local\repository

 

1.blog-parent工程。(pom工程)

(1)创建一个maven项目

 

(2)打包方式为pom

(3)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>cn.edu.slxy.blog</groupId>
     <artifactId>blog-parent</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>pom</packaging>
     <description>博客系统,父工程</description>
     <!-- 集中定义依赖版本号 -->
     <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}</version>
              </dependency>
              <!-- quartz任务调度框架 -->
              <dependency>
                   <groupId>org.quartz-scheduler</groupId>
                   <artifactId>quartz</artifactId>
                   <version>${quartz.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>
              <!-- Mybatis -->
              <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>
              <!-- MySql -->
              <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>
              <!-- Spring -->
              <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>org.springframework</groupId>
                   <artifactId>spring-jms</artifactId>
                   <version>${spring.version}</version>
              </dependency>
              <dependency>
                   <groupId>org.springframework</groupId>
                   <artifactId>spring-context-support</artifactId>
                   <version>${spring.version}</version>
              </dependency>
              <!-- JSP相关 -->
              <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>
              <!-- Redis客户端 -->
              <dependency>
                   <groupId>redis.clients</groupId>
                   <artifactId>jedis</artifactId>
                   <version>${jedis.version}</version>
              </dependency>
              <!-- solr客户端 -->
              <dependency>
                   <groupId>org.apache.solr</groupId>
                   <artifactId>solr-solrj</artifactId>
                   <version>${solrj.version}</version>
              </dependency>
              <!-- dubbo相关 -->
              <dependency>
                   <groupId>com.alibaba</groupId>
                   <artifactId>dubbo</artifactId>
                   <version>${dubbo.version}</version>
              </dependency>
              <dependency>
                   <groupId>org.apache.zookeeper</groupId>
                   <artifactId>zookeeper</artifactId>
                   <version>${zookeeper.version}</version>
              </dependency>
              <dependency>
                   <groupId>com.github.sgroschupf</groupId>
                   <artifactId>zkclient</artifactId>
                   <version>${zkclient.version}</version>
              </dependency>
              <dependency>
                   <groupId>org.apache.activemq</groupId>
                   <artifactId>activemq-all</artifactId>
                   <version>${activemq.version}</version>
              </dependency>
              <dependency>
                   <groupId>org.freemarker</groupId>
                   <artifactId>freemarker</artifactId>
                   <version>${freemarker.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>
              <!-- java编译插件 -->
              <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                     <encoding>${project.build.sourceEncoding}</encoding>
                    <compilerArguments>
                        <verbose />
                         <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
          </plugins>
          <pluginManagement>
              <plugins>
                   <!-- 配置Tomcat插件 -->
                   <plugin>
                        <groupId>org.apache.tomcat.maven</groupId>
                        <artifactId>tomcat7-maven-plugin</artifactId>
                        <version>2.2</version>
                   </plugin>
              </plugins>
          </pluginManagement>
     </build>
</project>
通用的pom文件

2.blog-common工程。(通用的工具类、通用的pojo。打包方式jar。需要继承父工程。)

(1)创建一个maven项目

(2)打包方式为pom

 

(3)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
          <groupId>cn.edu.slxy.blog</groupId>
          <artifactId>blog-parent</artifactId>
          <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>blog-common</artifactId>
     <description>通用的工具类、通用的pojo</description>
     <!-- 依赖的jar包 -->
     <dependencies>
          <!-- 时间操作组件 -->
          <dependency>
              <groupId>joda-time</groupId>
              <artifactId>joda-time</artifactId>
          </dependency>
          <!-- Apache工具组件 -->
          <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>
          <!-- Jackson Json处理工具包 -->
          <dependency>
               <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-databind</artifactId>
          </dependency>
          <!-- 单元测试 -->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <scope>test</scope>
          </dependency>
          <!-- 日志处理 -->
          <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-log4j12</artifactId>
          </dependency>
     </dependencies>
</project>
common工程pom文件

3.blog-manager工程。(服务层工程,聚合工程。打包方式pom。)

(1)创建一个maven项目

(2)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
          <groupId>cn.edu.slxy.blog</groupId>
          <artifactId>blog-parent</artifactId>
          <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>blog-manager</artifactId>
     <packaging>pom</packaging>
     <description>服务层工程,聚合工程。</description>
     <dependencies>
          <!-- 依赖common -->
          <dependency>
              <groupId>cn.edu.slxy.blog</groupId>
              <artifactId>blog-common</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
     </dependencies>
     <build>
          <plugins>
              <!-- 配置Tomcat插件 -->
              <plugin>
                   <groupId>org.apache.tomcat.maven</groupId>
                   <artifactId>tomcat7-maven-plugin</artifactId>
                   <configuration>
                        <path>/</path>
                        <port>8080</port>
                   </configuration>
              </plugin>
          </plugins>
     </build>
</project>
服务层工程pom文件

4.blog-manager-pojo 模块。(blog-manager服务层工程的maven模块,打包方式为jar)

(1)创建blog-manager-pojo 模块

(2)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.edu.slxy.blog</groupId>
    <artifactId>blog-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>blog-manager-pojo</artifactId>
 
  <!-- 集成通用mapper -->
  <dependencies>
     <dependency>
     <groupId>com.github.abel533</groupId>
     <artifactId>mapper</artifactId>
     <version>2.3.4</version>
     </dependency>
  </dependencies>
 
</project>
pojo模块pom文件

5.blog-manager-dao (持久层,blog-manager服务层工程的maven模块,打包方式为jar。)

(1)创建blog-manager-dao 模块

 

(2)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
          <groupId>cn.edu.slxy.blog</groupId>
          <artifactId>blog-manager</artifactId>
          <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>blog-manager-dao</artifactId>
     <dependencies>
          <!-- 依赖pojo -->
          <dependency>
              <groupId>cn.edu.slxy.blog</groupId>
              <artifactId>blog-manager-pojo</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
          <!-- Mybatis -->
          <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>
          <!-- MySql -->
          <dependency>
              <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
          </dependency>
          <!-- 连接池 -->
          <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>druid</artifactId>
          </dependency>
          
          <!-- 集成通用mapper -->
          <dependency>
              <groupId>com.github.abel533</groupId>
              <artifactId>mapper</artifactId>
              <version>2.3.4</version>
          </dependency>
     </dependencies>
</project>
持久层pom文件

6.blog-manager-interface(业务接口层,blog-manager服务层工程的maven模块,打包方式为jar。)

(1)创建blog-manager-interface  模块

(2)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.edu.slxy.blog</groupId>
    <artifactId>blog-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>blog-manager-interface</artifactId>
  
  <dependencies>
     <!-- 依赖pojo -->
     <dependency>
          <groupId>cn.edu.slxy.blog</groupId>
     <artifactId>blog-manager-pojo</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     </dependency>
  </dependencies>
  
</project>
业务层接口pom文件

7.blog-manager-service(业务层,blog-manager服务层工程的maven模块,打包方式为jar。)

(1)创建blog-manager-service   模块

(2)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
          <groupId>cn.edu.slxy.blog</groupId>
          <artifactId>blog-manager</artifactId>
          <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>blog-manager-service</artifactId>
     <dependencies>
          <!-- 依赖dao -->
          <dependency>
              <groupId>cn.edu.slxy.blog</groupId>
              <artifactId>blog-manager-dao</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
          <!-- 依赖interface -->
          <dependency>
              <groupId>cn.edu.slxy.blog</groupId>
               <artifactId>blog-manager-interface</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
          <!-- 依赖Spring -->
          <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>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-jms</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
               <artifactId>spring-context-support</artifactId>
          </dependency>
     </dependencies>
</project>
业务层pom文件

8.blog-manager-web(表现层,blog-manager服务层工程的maven模块,打包方式为war。)

(1)创建blog-manager-web  模块

(2)创建完成项目报错,原因是目录结构不完整,在webapp目录下缺少 WEB-INF目录和该目录下的web.xml文件。

 

解决方法一:可以手动创建,补全该目录和和该目录下的文件。

  • web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  version="2.5">
  <display-name>blog-manager-web</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>
View Code
  • 解决方法二:如下图:

(3)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
          <groupId>cn.edu.slxy.blog</groupId>
          <artifactId>blog-manager</artifactId>
          <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>blog-manager-web</artifactId>
     <packaging>war</packaging>
     <description>表现层</description>
     <dependencies>
          <!-- 依赖service -->
          <dependency>
              <groupId>cn.edu.slxy.blog</groupId>
               <artifactId>blog-manager-service</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
          <!-- JSP相关 -->
          <dependency>
              <groupId>jstl</groupId>
              <artifactId>jstl</artifactId>
          </dependency>
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>servlet-api</artifactId>
              <scope>provided</scope>
          </dependency>
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jsp-api</artifactId>
              <scope>provided</scope>
          </dependency>
          <!-- 文件上传组件 -->
          <dependency>
              <groupId>commons-fileupload</groupId>
              <artifactId>commons-fileupload</artifactId>
          </dependency>
     </dependencies>
</project>
表现层pom文件

(4)添加欢迎页,运行启动blog-manager工程。

  •  index.jsp

<%@ page language="java" contentType="text/html;  charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01  Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;  charset=utf-8">
<title>首页</title>
</head>
<body>
     <h1>博客系统首页</h1>
</body>
</html>
测试首页
  • 把blog-parent、blog-common安装到本地仓库。然后再启动。安装过程如下:

  • 运行blog-manager工程。

  • 项目搭建成功

 

posted @ 2017-12-27 20:52  别人放弃,我依旧坚持  阅读(275)  评论(0编辑  收藏  举报