Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目

  • 创建 maven 项目
  • pom.xml 文件配置
  • Mybatis 配置
    • Mybatis Generator配置
      • pom.xml 文件中配置插件
      • 配置数据库连接配置文件 datasource.properties
      • 配置 generatorConfig.xml 文件
      • 生成代码
    • Mybatis-Plugin 安装
    • Mybatis-PageHelper 分页插件
  • Spring、Spring MVC 配置
    • 配置 Spring 容器
    • 配置 Spring MVC
    • 配置 web.xml
  • 配置 logback.xml 文件
  • Tomcat Server 配置
  • Git 初始化

创建 maven 项目

  • File -> New -> Module,进入创建项目窗口,如图选择

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第1张图片

  • 点击 Next,填写 GroupIdArtifactIdVersion

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第2张图片

注:

GroupID
项目组织唯一的标识符,实际对应 Java 的包的结构,是 main 目录里 Java 的目录结构。一般是域名的反写,也作为项目中类的包名。

ArtifactID
项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

  • 下一步,在 Properties 中添加一个参数 archetypeCatalog=internal

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第3张图片

注: maven 的 jar 包需要去 maven 的中央仓库下载,访问国外的服务器,墙的存在速度很慢的,所以添加参数archetypeCatalog=internal ,表示仅使用内部元数据。

  • Next,然后 finish,maven 项目就创建好了,如下就是整个项目的结构了

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第4张图片

  • src/main 下创建 java文件夹,点击Project Structrue或者快捷键command + ;调出窗口。

对目录进行标注,将java目录标注为sources标签

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第5张图片

对于这几个目录,网上的说明是这样的:

Sources: 一般用于标注类似 src 这种可编译目录。有时候我们不单单项目的 src 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。只有 Sources 这种可编译目录才可以新建 Java 类和包。

Tests: 一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是 src,maven 的 src 我们是不会设置为 Sources 的,而是在其子目录 main 目录下的 java 目录,我们会设置为 Sources。而单元测试的目录是 src - test - java,这里的 java 目录我们就会设置为 Tests,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比较彻底的。

Resources: 一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:src - main -resources,这里的 resources 目录我们就会设置为 Resources,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。

Test Resources: 一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:src - test -resources,这里的 resources 目录我们就会设置为 Test Resources,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。

Excluded: 一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 src 即可。

(引用自 http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/eclipse-java-web-project-introduce.html)

  • java 目录下新建包,新建 controller 层、dao 层、pojo 层、service 层等层。

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第6张图片

maven 项目的创建工作基本完成。

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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>com.chenqingyungroupId>
  <artifactId>myprojectartifactId>
  <packaging>warpackaging>
  <version>1.0-SNAPSHOTversion>
  <name>myproject Maven Webappname>
  <url>http://maven.apache.orgurl>

    
    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8maven.compiler.encoding>

        
        <org.spring.version>4.0.0.RELEASEorg.spring.version>
        <org.mybatis.version>3.4.1org.mybatis.version>
        <org.mybatis.spring.version>1.3.0org.mybatis.spring.version>
    properties>

    <dependencies>

        
        <dependency>
            <groupId>org.apache.tomcatgroupId>
            <artifactId>tomcat-servlet-apiartifactId>
            <version>7.0.64version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>

            
            <version>${org.spring.version}version>

        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-oxmartifactId>
            <version>${org.spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${org.spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${org.spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${org.spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>1.7.3version>
        dependency>
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjrtartifactId>
            <version>1.6.11version>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>${org.mybatis.spring.version}version>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>${org.mybatis.version}version>
        dependency>

        
        <dependency>
            <groupId>org.codehaus.jacksongroupId>
            <artifactId>jackson-mapper-aslartifactId>
            <version>1.9.12version>
        dependency>

        
        <dependency>
            <groupId>commons-dbcpgroupId>
            <artifactId>commons-dbcpartifactId>
            <version>1.4version>
            
        dependency>

        
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-classicartifactId>
            <version>1.1.2version>
            <scope>compilescope>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-coreartifactId>
            <version>1.1.2version>
            <scope>compilescope>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.44version>
        dependency>

        
        <dependency>
            <groupId>com.google.guavagroupId>
            <artifactId>guavaartifactId>
            <version>20.0version>
        dependency>

        
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
            <version>3.5version>
        dependency>

        
        <dependency>
            <groupId>commons-collectionsgroupId>
            <artifactId>commons-collectionsartifactId>
            <version>3.2.1version>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            
        dependency>

        
        <dependency>
            <groupId>joda-timegroupId>
            <artifactId>joda-timeartifactId>
            <version>2.3version>
        dependency>

        
        <dependency>
            <groupId>org.hashidsgroupId>
            <artifactId>hashidsartifactId>
            <version>1.0.1version>
        dependency>

        
        <dependency>
            <groupId>commons-netgroupId>
            <artifactId>commons-netartifactId>
            <version>3.1version>
        dependency>

        
        
        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.2.2version>
        dependency>
        <dependency>
            <groupId>commons-iogroupId>
            <artifactId>commons-ioartifactId>
            <version>2.0.1version>
        dependency>

        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
            <version>4.1.0version>
        dependency>
        <dependency>
            <groupId>com.github.miemiedevgroupId>
            <artifactId>mybatis-paginatorartifactId>
            <version>1.2.17version>
        dependency>
        <dependency>
            <groupId>com.github.jsqlparsergroupId>
            <artifactId>jsqlparserartifactId>
            <version>0.9.4version>
        dependency>

        
        <dependency>
            <groupId>commons-codecgroupId>
            <artifactId>commons-codecartifactId>
            <version>1.10version>
        dependency>
        <dependency>
            <groupId>commons-configurationgroupId>
            <artifactId>commons-configurationartifactId>
            <version>1.10version>
        dependency>
        <dependency>
            <groupId>commons-langgroupId>
            <artifactId>commons-langartifactId>
            <version>2.6version>
        dependency>
        <dependency>
            <groupId>commons-logginggroupId>
            <artifactId>commons-loggingartifactId>
            <version>1.1.1version>
        dependency>
        <dependency>
            <groupId>com.google.zxinggroupId>
            <artifactId>coreartifactId>
            <version>2.1version>
        dependency>
        <dependency>
            <groupId>com.google.code.gsongroupId>
            <artifactId>gsonartifactId>
            <version>2.3.1version>
        dependency>
        <dependency>
            <groupId>org.hamcrestgroupId>
            <artifactId>hamcrest-coreartifactId>
            <version>1.3version>
        dependency>

        
        <dependency>
            <groupId>redis.clientsgroupId>
            <artifactId>jedisartifactId>
            <version>2.9.0version>
        dependency>
    dependencies>

  <build>
    <finalName>myprojectfinalName>
    <plugins>
          
          <plugin>
              <groupId>org.mybatis.generatorgroupId>
              <artifactId>mybatis-generator-maven-pluginartifactId>
              <version>1.3.2version>
              <configuration>
                  <verbose>trueverbose>
                  <overwrite>trueoverwrite>
              configuration>
          plugin>

          
          <plugin>
              <groupId>org.apache.maven.pluginsgroupId>
              <artifactId>maven-compiler-pluginartifactId>
              <configuration>
                  
                  <source>1.8source>
                  <target>1.8target>
                  <encoding>UTF-8encoding>

                  
                  
                  <compilerArguments>
                      <extdirs>${project.basedir}/src/main/webapp/WEB-INF/libextdirs>
                  compilerArguments>
              configuration>
          plugin>
      plugins>
  build>
project>

根据实际需要添加依赖

Mybatis 配置

Mybatis Generator配置

代码生成器,自动生成 pojodaoMapping 中的文件。

pom.xml 文件中配置插件

<plugins>
          
          <plugin>
              <groupId>org.mybatis.generatorgroupId>
              <artifactId>mybatis-generator-maven-pluginartifactId>
              <version>1.3.2version>
              <configuration>
                  <verbose>trueverbose>
                  <overwrite>trueoverwrite>
              configuration>
          plugin>
      plugins>

配置数据库连接配置文件 datasource.properties

resources 目录下新建 datasource.properties 文件

# 配置下载的驱动包的位置
db.driverLocation = ./library/mysql-connector-java-5.1.44-bin.jar

# db.driverClassName = oracle.jdbc.driver.OracleDriver
db.driverClassName = com.mysql.jdbc.Driver

# db.url=jdbc:mysql://数据库IP:数据库 Port/database?characterEncoding=utf-8
db.url = jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8&useSSL=true
db.username = mydb
db.password = 123456

db.initialSize = 20
db.maxActive = 50
db.maxIdle = 20
db.minIdle = 10
db.maxWait = 10
db.defaultAutoCommit = true
db.minEvictableIdleTimeMillis = 3600000

配置 generatorConfig.xml 文件

这里就使用默认文件名,在 resources 目录下新建 generatorConfig.xml 文件。




<generatorConfiguration>
    
    <properties resource="datasource.properties">properties>

    
    <classPathEntry location="${db.driverLocation}"/>

    <context id="default" targetRuntime="MyBatis3">

        
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        commentGenerator>

        
        <jdbcConnection
                driverClass="${db.driverClassName}"
                connectionURL="${db.url}"
                userId="${db.username}"
                password="${db.password}">
        jdbcConnection>


        
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        javaTypeResolver>


        
        <javaModelGenerator targetPackage="com.chenqingyun.pojo" targetProject="./src/main/java">
            
            <property name="enableSubPackages" value="false"/>
            
            <property name="constructorBased" value="true"/>
            
            <property name="trimStrings" value="true"/>
            
            <property name="immutable" value="false"/>
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
            <property name="enableSubPackages" value="false"/>
        sqlMapGenerator>

        

        
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.chenqingyun.dao" targetProject="./src/main/java">
            
            <property name="enableSubPackages" value="false" />
        javaClientGenerator>

        
        <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>

        <table tableName="information" domainObjectName="Information" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
            <columnOverride column="detail" jdbcType="VARCHAR" />
            <columnOverride column="images" jdbcType="VARCHAR" />
        table>
    context>
generatorConfiguration>

生成代码

右侧菜单 Maven ProjectPlugins 下双击 mybatis-generator 执行生成代码

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第7张图片

查看执行结果

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第8张图片

执行成功,在 pojodaomappers 目录下就会有生成的文件了。

Mybatis-Plugin 安装

Mybatis-Plugin 插件的作用

提供 Service 与 Mapper 接口的导航,提供 Mapper 接口与配置文件中对应 SQL 的导航

自动检查 Mapper XML 文件中的 id 冲突

自动检查 Mapper XML 文件中错误的属性值

  • 点击 preference -> plugins -> Browse Repository
    搜索 Mybatis-Plugin ,左侧点击install 安装插件
    Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第9张图片

然后重启 IDEA。

Mybatis-PageHelper 分页插件

  • pom.xml 文件中添加依赖
<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
    <version>4.1.0version>
dependency>
<dependency>
    <groupId>com.github.miemiedevgroupId>
    <artifactId>mybatis-paginatorartifactId>
    <version>1.2.17version>
dependency>
<dependency>
    <groupId>com.github.jsqlparsergroupId>
    <artifactId>jsqlparserartifactId>
    <version>0.9.4version>
dependency>

Spring、Spring MVC 配置

配置 Spring 容器

resources 目录下新建 applicationContext.xml 文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    
    <context:component-scan base-package="com.chenqingyun" annotation-config="true"/>

    
    <aop:aspectj-autoproxy/>


    <import resource="applicationContext-datasource.xml"/>


beans>
  • 配置 applicationContext-datasource.xml 文件
    新建文件,配置如下:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <context:component-scan base-package="com.chenqingyun" annotation-config="true"/>

    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="2"/>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
            <list>
                <value>classpath:datasource.propertiesvalue>
            list>
        property>
        <property name="fileEncoding" value="utf-8"/>
    bean>


    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${db.driverClassName}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
        
        <property name="initialSize" value="${db.initialSize}"/>
        
        <property name="maxActive" value="${db.maxActive}"/>
        
        <property name="maxIdle" value="${db.maxIdle}"/>
        
        <property name="minIdle" value="${db.minIdle}"/>
        
        <property name="maxWait" value="${db.maxWait}"/>
        
         
        <property name="defaultAutoCommit" value="${db.defaultAutoCommit}"/>
        
         
        
         
        
        <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}"/>

        
        <property name="timeBetweenEvictionRunsMillis" value="40000"/>
        
        <property name="testWhileIdle" value="true"/>
        
        <property name="validationQuery" value="SELECT 1 FROM dual"/>
    bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath*:mappers/*Mapper.xml">property>

        
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <value>
                            dialect=mysql
                        value>
                    property>
                bean>
            array>
        property>

    bean>

    <bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.chenqingyun.dao"/>
    bean>

    
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
        
        <property name="rollbackOnCommitFailure" value="true"/>
    bean>


beans>

配置 Spring MVC

使用默认文件名和路径,在./src/main/webapp/WEB-INF 目录下新建 dispatcher-servlet.xml 文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="com.chenqingyun" annotation-config="true"/>

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8value>
                        <value>text/html;charset=UTF-8value>
                    list>
                property>
            bean>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8value>
                    list>
                property>
            bean>
        mvc:message-converters>
    mvc:annotation-driven>



    
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"/> 
        <property name="maxInMemorySize" value="4096" />
        <property name="defaultEncoding" value="UTF-8">property>
    bean>


beans>

配置 web.xml

./src/main/webapp/WEB-INF 目录下


<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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">

    <display-name>Archetype Created Web Applicationdisplay-name>

    
    <filter>
        <filter-name>characterEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>characterEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>


    

    
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListenerlistener-class>
    listener>

    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>
            classpath:applicationContext.xml
        param-value>
    context-param>

    
    <servlet>
        <servlet-name>dispatcherservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <load-on-startup>1load-on-startup>
    servlet>

    <servlet-mapping>
        <servlet-name>dispatcherservlet-name>
        <url-pattern>*.dourl-pattern>
    servlet-mapping>

web-app>

配置 logback.xml 文件

resources 目录下新建 logback.xml 文件


<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoding>UTF-8encoding>
        <encoder>
            <pattern>[%d{HH:mm:ss.SSS}][%p][%c{40}][%t] %m%npattern>
        encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUGlevel>
        filter>
    appender>

    <appender name="myproject" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${CATALINA_HOME}/logs/myproject.logFile>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${CATALINA_HOME}/logs/myproject.log.%d{yyyy-MM-dd}.gzfileNamePattern>
            <append>trueappend>
            <maxHistory>10maxHistory>
        rollingPolicy>
        <encoder>
            <pattern>[%d{HH:mm:ss.SSS}][%p][%c{40}][%t] %m%npattern>
        encoder>
    appender>


    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${CATALINA_HOME}/logs/error.logFile>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${CATALINA_HOME}/logs/error.log.%d{yyyy-MM-dd}.gzfileNamePattern>
            <append>trueappend>
            <maxHistory>10maxHistory>
        rollingPolicy>
        <encoder>
            <pattern>[%d{HH:mm:ss.SSS}][%p][%c{40}][%t] %m%npattern>
        encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERRORlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    <logger name="com.chenqingyun" additivity="false" level="INFO" >
        <appender-ref ref="myproject" />
        <appender-ref ref="console"/>
    logger>



    

    <logger name="com.chenqingyun.dao" level="DEBUG"/>

    
        
    

    
        
    
    
        
    

    
        
    


    <root level="DEBUG">
        <appender-ref ref="console"/>
        <appender-ref ref="error"/>
    root>

configuration>

Tomcat Server 配置

  • 点击 Edit Configurations

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第10张图片

  • 点击 + 号,选择 Tomcat Server -> Local

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第11张图片

  • 点击Configure添加 Tomact,Tomcat Home 选择根文件夹

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第12张图片

  • 切换到 Deployment 下,点击 + 号,选择 Artifact,添加 war

Intellij IDEA 创建 Maven + Spring + SpringMVC + MyBatis 项目_第13张图片

点击 OK 就好了。

运行看看,Tomcat 启动成功那 Tomcat Server 就配置没问题了。

Git 初始化

  • Termianl 中输入 git init 初始化 git 项目

  • 创建 .gitignore 文件
    Termianl 中输入 touch .gitignore 创建文件,添加配置

*.calss

#package file
*.war
*.ear

#kdiff3 ignore
*.orig

#maven ignore
target/

#idea
.idea/
/idea/
*.ipr
*.iml
*.iws

#temp file
*.log
*.cache
*.diff
*.patch
*.tmp

#system ignore
.DS_Store
Thumbs.db
  • 提交项目
    git add .添加文件,git commit -m "first commit" 提交
[master (root-commit) 61cd96b] first commit
 4 files changed, 62 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 pom.xml
 create mode 100644 src/main/webapp/WEB-INF/web.xml
 create mode 100644 src/main/webapp/index.jsp

提交成功

  • 关联 GitHub 上的仓库
    GitHub 上创建与项目同名的仓库,复制远程仓库地址。输入git remote add origin + 远程仓库地址。
    git brach 查看分支,显示在 master分支上
$ git remote add origin git@github.com:chenqingyun/myproject.git
$ git branch
* master
  • 推送到远程仓库
    git push -u origin master
$ git push -u origin master
To github.com:chenqingyun/myproject.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:chenqingyun/myproject.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

告诉我们要先执行git pull命令,将远程仓库上的先获取到本地。
执行 git pull

$ git pull
warning: no common commits
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:chenqingyun/myproject
 * [new branch]      master     -> origin/master
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull  

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/ master

成功后再执行 git push -u origin master 命令。

To github.com:chenqingyun/myproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:chenqingyun/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

还是失败,说当前分支是落后的,目前远程仓库上还什么都没有,我们可以强制 push ,覆盖掉远程仓库上的内容。

执行 git push -u -f origin master

Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (10/10), 1.15 KiB | 1.15 MiB/s, done.
Total 10 (delta 0), reused 0 (delta 0)
To github.com:chenqingyun/myproject.git
 + 6138854...61cd96b master -> master (forced update)
Branch master set up to track remote branch master from origin.

提示成功,可以去 GitHub 上刷新下仓库看看。

git 项目的初始化就完成了。

  • 创建分支

    • git branch -r 查看远程分支,在 origin/master 上,即主干分支
    • master 基础上创建一个 v1.0 的分支,输入git checkout -b v1.0 origin/master
      Branch v1.0 set up to track remote branch master from origin.
      Switched to a new branch 'v1.0'

    分支切换成功,执行git branch 查看本地分支,是v1.0

    • 推送分支,执行git push origin HEAD -u
      Total 0 (delta 0), reused 0 (delta 0)
      To github.com:chenqingyun/myproject.git
      * [new branch]      HEAD -> v1.0
      Branch v1.0 set up to track remote branch v1.0 from origin.

    远程仓库上就会有这个分支了

你可能感兴趣的:(环境配置)