Eshop(1)

来源:互联网 发布:洪厚甜网络书法 编辑:程序博客网 时间:2024/06/06 04:56

第一次写博客,为了记下学习笔记,分布式。
开发技术
项目采用Maven基于SSM架构搭建,Tomcat(Maven Tomcat Plugin),Mysql,Nginx(服务器),Redis。
以及Solr,Dubbo(f分布式),httpclient(调用系统服务)等。
开发环境
Maven-3.5.0
Tomcat-7.0.75(Maven Tomcat Plugin)
JDK 1.8
MySQL 5.7.17
Nginx 1.8.0
Redis 3.0.0
Win7 操作系统
SVN(版本管理工具)

项目架构
Maven打包方式
jar工程 : pom工程的子工程,由pom工程来管理。
war工程 : 一个web工程,可以直接放到Tomcat下运行工程。
pom工程 :只有一个pom.xml文件,一般是作为父工程出现的,只是定义一些依赖、插件、还有一些版本号等。

  • Eshop-parent(pom工程)

         - Eshop-common(jar工程)     - Eshop-manager(pom工程,聚合工程)         - Eshop-manager-pojo(jar工程)         - Eshop-manager-dao(jar)         - Eshop-manager-interface(jar)         - Eshop-manager-service(war)    - Eshop-manager-web (war 前台)

构建Maven-parent项目
eclipse添加maven工程, Eshop-parent

<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.jdcy</groupId>    <artifactId>Eshop-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</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>UTF-8</encoding>                </configuration>            </plugin>            <!-- 配置打包项目时跳过Tests -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>                <version>2.6</version>                <configuration>                    <skipTests>true</skipTests>                </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>

注意这块,在构建完parent pom项目以及后面需要依赖的项目后需要打成包发布到maven仓库以供其他项目依赖,需要Maven install,可能会报错,并且正式发布版一定会跳过测试,测试与功能无关,打包时间长,而且浪费宽带和磁盘,引入这段代码可以跳过测试,

<plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-surefire-plugin</artifactId>    <version>2.6</version>    <configuration>        <skipTests>true</skipTests>    </configuration></plugin>

Maven搭建common
创建maven project :Eshop-common,依赖父工程Eshop-parent.

<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.jdcy</groupId>        <artifactId>Eshop-parent</artifactId>        <version>0.0.1-SNAPSHOT</version>    </parent>    <groupId>com.jdcy</groupId>    <artifactId>Eshop-common</artifactId>    <version>0.0.1-SNAPSHOT</version>    <!-- 依赖工具类的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>        <!-- httpclient -->        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpclient</artifactId>        </dependency>        <!-- quartz任务调度框架 -->        <dependency>            <groupId>org.quartz-scheduler</groupId>            <artifactId>quartz</artifactId>        </dependency>        <!-- 单元测试 -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <scope>test</scope>        </dependency>        <!-- 日志处理 -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-log4j12</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>                <version>2.6</version>                <configuration>                    <skipTests>true</skipTests>                </configuration>            </plugin>        </plugins>    </build></project>```<groupId>com.jdcy</groupId><version>0.0.1-SNAPSHOT</version>下面有黄色的下划线,这意味着可以删掉它们,因为我们在父工程里面已经定义了组织名和版本号了,当然了你不删除掉也是没关系的。 **搭建Eshop-manager工程**Eshop-manager  pom工程

**搭建Eshop-manager子模块**Eshop-manager-pojo模块创建maven-Module,父工程Eshop-managerEshop-manager-dao模块创建maven-Module,父工程Eshop-manager

Eshop-manager-interface模块创建maven-Module,父工程Eshop-manager

Eshop-manager-service模块创建maven-Module,父工程Eshop-manager

**Eshop-manager-web模块**Maven-project