互联网大项目第一天(共21天) -项目的搭建

jt项目的搭建:

项目的架构图:

这里写图片描述

这个是京淘项目的大体的架构(省略了其他的业务模块),
需求:分布式的项目中,如果每个项目自己管理jar包.如果遇到jar包升级和版本冲突时,修改的项目数量会很多.
解决:使用Maven中的继承实现
说明:构建一个项目.命名为JT-parent.在该项目中保存是整个架构设计中的公共jar包,如果将来需要修改jar包文件,只需要修改jt-parent即可.

重点:如果对jt-parent做了修改,则必须打包,否则依赖项目失效报错

问题:分布式项目中,需要使用工具类,如果每个项目都自己单独添加工具类这时会造成项目的维护不易.如果工具类发生了修改,则每个项目都需要修改!!
解决:采用jt-common项目定义工具类.由于工具类是java文件构成的,需要被别人直接的调用,所采用依赖的形式,进行注入.

1新建jt-parent项目

jt-parent使用的骨架是:  --  quickstart,以为这是一个父工程,子工程模块需要继承这个jt-parent,所以打包的方式是pom.只需要在pom.xml的视图里面,注意jdk的环境不要使用默认的,用自己安装的
修改就行

这里写图片描述

1.2修改jt-parent的pom.xml文件:

<!-- 集中定义依赖版本号 -->
<properties>
    <junit.version>4.10</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>
    <bonecp-spring.version>0.8.0.RELEASE</bonecp-spring.version>
    <druid.version>1.0.29</druid.version>
    <mapper.version>2.3.2</mapper.version>
    <pagehelper.version>3.4.2</pagehelper.version>
    <jsqlparser.version>0.9.1</jsqlparser.version>
    <slf4j.version>1.6.4</slf4j.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>2.4</commons-io.version>
    <commons-fileupload.version>1.3.1</commons-fileupload.version>
    <jackson.version>2.4.2</jackson.version>
    <httpclient.version>4.3.5</httpclient.version>
    <jedis.version>2.6.2</jedis.version>
</properties>

<dependencies>
    <!-- 单元测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- Spring -->
    <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>


    <!-- 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>


    <!-- MySql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>

    <!-- 通用Mapper -->
    <dependency>
        <groupId>com.github.abel533</groupId>
        <artifactId>mapper</artifactId>
        <version>${mapper.version}</version>
    </dependency>

    <!-- 分页插件 -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>${pagehelper.version}</version>
    </dependency>
    <dependency>
        <groupId>com.github.jsqlparser</groupId>
        <artifactId>jsqlparser</artifactId>
        <version>${jsqlparser.version}</version>
    </dependency>

    <!-- 连接池 -->
    <dependency>
        <groupId>com.jolbox</groupId>
        <artifactId>bonecp-spring</artifactId>
        <version>${bonecp-spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.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>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>4.3.1</version>
    </dependency>

    <!-- 消息队列 -->
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
           <groupId>org.springframework.amqp</groupId>
           <artifactId>spring-rabbit</artifactId>
           <version>1.4.0.RELEASE</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>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-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload.version}</version>
    </dependency>

    <!-- jedis -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>${jedis.version}</version>
    </dependency>

    <!--添加spring-datajar包  -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
        <version>1.4.1.RELEASE</version>
    </dependency>

    <!-- 字符加密、解密 -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>

    <!-- 数据校验 -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
    </dependency>
</dependencies>

只需要把老师给的pom.xml文件里面的依赖以及版本控制的代码复制在自己的负工程的pom.xml文件里面就行了

2.新建jt-manage项目

这个项目是后台管理项目,也需要运行在tomcat上,让人访问,所以骨架的方式是webapp:这样就是以war包的方式打包;注意jdk的环境不要使用默认的,用自己安装的,不然文件夹是不全的

2.1jt-manage是子工程,需要继承jt-parent父工程.

只需要在这个工程的pom.xml的Overview里面添加jt-parent为父工程就可以了.

这里写图片描述

下一步:

这里写图片描述

这时候jt-manage就会继承jt-parent所添加的依赖,但是由于我们是使用骨架新建的maven项目,这样默认添加的junit依赖版本比较低,把这些项目的默认生成
的junit依赖删除就行了.需要把所有的默认的低版本的junit的测试都删掉.

注意这个项目是可以让人访问的项目,是以war的打包方式打包的,是要运行在tomcat上面;所以这个子项目也得配一个tomcat的插件;配置在这个项目的pom.xml文件里面:

     <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8091</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
只能有一个build,默认的build标签里面的内容需要删除,否则会报错,里面的<port></port>的值是可以改变的,这样就可以运行多个tomcat了.

3.1新建jt-common项目:

这个项目是作为工具类的项目,所有的子项目都需要依赖这个项目,子项目可能需要使用到这个项目里面的工具类,工具类项目也是属于一个子项目,所以也得
由jt-parent来控制,所以也得在这个子项目里的pom.xml里面条件jt-parent为父亲项目;

3.2把老师发的common的文件复制到这个jt-common项目里面:

复制方法:

1.选择Navigator这个视图,把里面这个src目录全部删除掉.

这里写图片描述

2.把老师给的common项目里面的src整个目录都拷贝到这个项目中去,代替原来的src目录.(这样可以方便地复制别人项目的代码--而且不需要解决一些
环境上的问题,只是代码上的问题)

这里写图片描述

还需要让jt-manage项目添加jt-common的依赖;

这里写图片描述

这样就把整个环境搭建得差不多了.

4.运行Tomcat:

之前我们让web项目跑起来,得手动将项目添加到tomcat上,进行部署,然后,启动tomcat发布.现在可以使用maven来发布项目了.
使用maven来发布项目,即使没有把tomcat引入到eclipse里面,也是可以发布的.(因为在web项目里面配置了tomcat的插件,是这个插件起了作用)

使用maven发布项目:

这里写图片描述

点击这个运行按钮右边的下拉选项,选择Run Configuration选项,进行自己的配置.
这里写图片描述

按照这种方式进行配置,注意进去之后,右击Maven Build,悬着 New就可以出现这个视图了.配置完这一步之后,还没有完,还需要配置源码,否则打断点的时候,进不去源码;

这里写图片描述

main视图切换到Source视图,点击Add...

这里写图片描述

选择select-all

这里写图片描述

这样就直接可以使用maven来运行tomcat.

这里写图片描述
点击这个按钮就直接可以运行了


问题1:
这里写图片描述

出现这个问题是以为web项目里面没有配置tomcat的插件
如果没有配置tomcat插件,就只能使用之前的方式来发布项目,并且访问时,得加上项目名

问题2:
如何运行多个项目,跑多个tomcat,修改tomcat插件的端口号,就可以运行多个了.


问题:使用tomcat的一些理解

1.使用tomcat插件的话,就根本不需要用eclipse来集成tomcat了,只需要插件的一段代码

2.插件就相当于一个类,当使用tomcat插件时 ,是基于线程的,相当于new 了一个类,当程序启动时,程序会自动发布到内存中的线程中的tomcatd的webapp中进行访问

引用tommcat的好处是不会产生残存资源,内存资源将会被回收,所以不用担心资源的浪费
3.项目是运行在内存中,每一次启动tomcat都需要耗尽jvm的一部分内存,jvm默认的内存是256M,一般只能启动4台左右的tomcat.

猜你喜欢

转载自blog.csdn.net/qq_38200548/article/details/80173283