(1)Maven是一个项目构建工具,由apache提供,用Java开发的css
(2)构建工具:Ant(蚂蚁),Maven(专家)html
(3)构建工具做用:帮助程序员进行项目的建立,目录的建立、代码的编译,执行,测试,打包...java
(4)传统构建的缺陷:mysql
a:项目之间的依赖不方便,只能经过导包的形式创建关联程序员
b:不能实时更新代码web
c:导包方式麻烦,须要本身下载jar进行导入spring
d:当导入的jar包比较多时,容易发生包的重复,相同包的不一样版本,jar包之间版本兼容问题sql
(5)Maven当前最新版本为3.6.1,本文章使用3.3.9数据库
第二章:Maven经常使用配件概念apache
(1)仓库,Repository,用于存放全部的jar包
a:中央仓库,由apache官方提供,境外网址,下载速度慢
b:镜像仓库,由各个国家地区为国内程序员提供的仓库,阿里巴巴
c:本地仓库,jar包永远从本地仓库获取
(2)坐标
a:groupid:组编号,一般是逆向的公司域名
b:artifactid:项目的名称
c:version:版本号
查询jar包坐标的网址:
官网: https://mvnrepository.com/
阿里: https://maven.aliyun.com/mvn/search
注:Maven插件、本地仓库(包括jar包),在文章末尾会有网盘下载连接,注意下载
(1)编码方式:UTF-8(包括Workspace、css、HTML、JSP、XML的编码格式)
(2)检查jdk版本:1.8
注:最好不要使用系统默认的JDK,使用本地安装的JDK,不然工程运行会报错
(3)配置tomcat
(4)我的爱好配置:
a:字体设置
b:去除拼写检查
c:更换工程格式为Package Explorer
注意:在加载完成后,不要当即去建立Maven工程,不然会形成Eclipse卡顿
(1)指定Maven的配置文件settings.xml
(2)配置本地仓库位置
E:\Repository
(3)配置镜像仓库位置
用阿里巴巴的仓库,国内仓库,网速快
<!-- 配置镜像仓库地址 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
(4)配置jdk:
<!-- 指定jdk版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
分三种类型:
(1)jar:表明一个javase工程,未来Maven打包时会将这个工程打包成jar包
(2)war:表明一个web工程,打包成war包
(3)pom:表示一个逻辑工程,工程中只作项目管理,不作代码编写
pom:Project Object Model,能够将一个工程当成一个对象
Group Id:表示路径Id别的项目经过此ID进行定位本项目
Artifact Id:工程名称
Version:版本号
0.0.1-SNAPHOT:表示当前工程处于修改阶段,不建议引用
当配置完成后,点击保存,系统就户i根据依赖配置去下载相关jar包,并加载到工程中
(1)packading:war
(2)在项目建立成功后,生成web.xml 文件
(3)应该放在src/main/webapp/WEB-INF/web.xml
(4)建议自动生成,不建议手动建立目录,项目上右键->JavaEE Tools->Generate Deployment Descriptor Stub
(1)须要Tomcat支持,Maven中提供了Tomcat插件,每个项目均可以有本身独特的Tomcat,便于独立开发某同事便于分布式开发
(2)编码时须要依赖servlet-api.jar和jsp-api.jar
(3)须要依赖相关框架的jar包:spring,springmvc,mybatis...
<scope>test</scope>
表示该包只是在测试的时候生效,在项目运行和打包时不会生效
<scope>provided</scope>
表示该jar包只会在代码编写过程当中和编译中生效,不会打包到jar包中
<scope>compile</scope>
表示该包在全部阶段都会有效,包括项目打包阶段,为默认值
<scope>runtime</scope>
表示该包只是在运行时有用,好比数据库驱动包
<!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.13</version> </dependency>
<!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency>
<!-- jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.3</version> </dependency>
<!-- MaBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>
<!-- web --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax-servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
<!-- commons --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency>
<!-- log --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
<!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
maven build
输入命令:clean tomcat7:run
(1)pom工程是一个逻辑工程,只作项目的管理,不作代码的编写
(2)pom工程一般适一个父工程,拥有多个子工程
(3)pom工程中能够对jar包进行统一管理,子工程能够无需再配置jar包
(1)由于子工程可能有多个,而多个子工程不可能用到全部负工程中定义的jar包,因此,能够在pom工程中经过<dependencyManagment>标签对jar包进行统一管理
(2)使用<dependencyManagement>标签订义的依赖,只作声明,并不会直接使用,若是须要使用,仍是须要经过配置<dependency>标签,父工程中国统一声明依赖,能够有效的集中控制依赖(版本)
(3)使用<properties>标签对依赖jar包的版本进行控制,例如:
<properties> <spring-version>4.1.6-release</spring-version> </properties> <version>${spring-version}</version>
依赖关系是最弱的一种关系,有A和B两个工程,A工程中须要使用B工程中定义的属性或方法,那么,此时咱们说A依赖B
例若有A和B两个工程,B工程继承A工程,要求A工程必须是一个pom工程
在当前工程坐标中,若是groupId和version跟父工程相同,那么能够省略
聚合关系要求必须是先有继承关系,聚合关系要比积尘搞关系更紧密
将一个大型工程,拆分红多个小工程,这几个小工程合起来是一个工程
建立聚合工程的方式:
(1)先建立一个顶级工程,该工程必须是pom工程
(2)在顶级工程的基础上建立Maven Module
一个项目,有按功能拆分和按层次拆分两种,本次练习按照前台项目和后台项目进行拆分
SSM聚合工程,结构:
(1)顶级工程
名称:project-ssm
类型:pom
pom.xml:全部依赖的管理
(2)实体类模块
名称:ssm-pojo
类型:jar
(3)数据访问模块
名称:ssm-mapper
类型:jar
pom.xml
(4)后台系统
名称:ssm-management
类型:pom
(5)后台系统的控制器模块
名称:management-controller
类型:war
pom.xml
(6)后台系统的服务模块
名称:management-service
类型:jar
pom.xml
(7)后台系统的服务实现模块
名称:management-service-impl
类型:jar
pom.xml
web工程在运行前,须要将整个工程安装在本地仓库
<!-- 添加依赖 --> <!-- 管理jar包版本 --> <properties> <spring-version>4.1.6.RELEASE</spring-version> <aspectj-version>1.8.13</aspectj-version> <jackson-version>2.7.3</jackson-version> <mybatis-version>3.4.6</mybatis-version> <mybatis-spring-version>1.3.2</mybatis-spring-version> <mysql-version>5.1.38</mysql-version> <servlet-api-version>2.5</servlet-api-version> <jsp-api-version>2.1</jsp-api-version> <jstl-version>1.2</jstl-version> <fileupload-version>1.3.1</fileupload-version> <lang3-version>3.4</lang3-version> <log4j12-version>1.7.25</log4j12-version> <junit-version>4.12</junit-version> </properties> <dependencyManagement> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj-version}</version> </dependency> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-version}</version> </dependency> <!-- jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson-version}</version> </dependency> <!-- MaBatis --> <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>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-version}</version> <scope>runtime</scope> </dependency> <!-- web --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api-version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api-version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl-version}</version> </dependency> <!-- commons --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${fileupload-version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${lang3-version}</version> </dependency> <!-- log --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${log4j12-version}</version> </dependency> <!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit-version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <!-- Tomcat插件 --> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <!-- 配置tomcat --> <configuration> <path>/</path> <port>80</port> </configuration> </plugin> </plugins> </pluginManagement> </build>
热部署指的是经过Maven将项目远程部署到已经启动的服务器上的操做
须要借助tomcat默认提供的管理项目来实现,叫作manager
host-manager文件夹:是对Tomcat服务器进行管理
manager文件夹:是对部署到服务器上的项目进行管理
对于Tomcat7,使用管理器应用程序所需的角色已从各个大哥管理器角色更改成如下四个角色。若是须要分配你但愿访问的功能所需的角色;
manager-gui:容许访问HTML、GUI和状态页面
manager-script:容许访问文本界面和状态页面
manager-jmx:容许访问JMX代理和状态页面
manager-status:仅容许访问状态页面
在D:\Java_SoftWare\apache-tomcat-7.0.53-windows-x64\apache-tomcat-7.0.53\conf,修改tomcat-users.xml配置文件
<role rolename="manager-gui" /> <role rolename="manager-script" /> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
方法一:页面操做
地址栏输入:http://localhost:8080/manager
而后输入用户名,密码,进入页面进行项目的部署和管理
方法二:脚本命令操做
<!-- 配置tomcat --> <configuration> <path>/</path> <port>80</port> <!-- 配置热部署 --> <url>http://192.168.57.165:8080/manager/text</url> <username>tomcat</username> <password>tomcat</password> </configuration>
输入:
若是是第一次部署,输入:clean tomcat7:deploy
若是将项目修改,进行再次部署,输入:clean tomcat7:redeploy
注:
Maven插件及本地jar包仓库下载:
连接:https://pan.baidu.com/s/1vB_S1A7mvADtrkxn1IEtbw
提取码:ij5z