Ant
1.Ant 和 Maven 都是项目构建工具
2.在项目的运行编译打包等过程都需要依赖ant构建工具
3.现在的所有项目都是基于ant架构的
分布式
1.传统项目部署
1.1 新建一个项目,通过不同的包区分不同的模块
1.2 把这一个项目发布到服务器的tomcat中
2.分布式项目部署(适用于高负载的情况下)
2.1 把一个完整的项目拆分成多个项目,把拆分后的项目分别部署到对应的服务器(tomcat)中的过程就叫做分布式项目部署
2.1.1 把传统项目包换成一个单独的项目
Maven简介
1.基于Ant的构建工具,Ant有的功能,Maven都有,额外添加了其他功能
2.Maven的运行原理图
2.1 本地仓库:计算机中一个文件夹,自己定义是那个文件夹
2.2 中央仓库:网上的地址
https://repo1.maven.org/maven2/
先去本地仓库找,本地仓库没有就默认去中央仓库下载,
2.2.1 下载速度慢-->配置一个国内的镜像
2.3 保证JDK版本和开发环境一致,如果不配置(会自动下,下载速度快的版本:1.4 1.5)
3.坐标
3.1 每一个jar文件都有一个唯一坐标,通过坐标可以精确确定是哪一个jar
3.2 坐标组成
3.2.1 Group ID:公司名。公司网址倒写
3.2.2 Artifact ID:项目名
3.2.3 Version :版本
4.pom
4.1 英文名称:Project Object Mode
4.2 项目对象模型
4.2.1 把Project当做对象看待
4.2.2 通过maven构建工具可以让对象(项目)和对象(项目)之间产生关系
5.
http://mvnrepository.com/
新建Maven项目
1.new-->Maven Project
2.勾选复选框,表示创建一个简单的Maven项目(不应用任何模板)
3.填写项目信息
3.1 Group ID:公司网址倒写
3.2 Artifact ID:项目名称
3.3 Version:版本 0.0.1-SNAPSHOT 0.0.1-快照版
3.4 Packaging:项目的类型,最终会被打包成什么类型
3.4.1 jar:jar包 java项目
3.4.2 war:web项目
3.4.3 pom:逻辑父项目
3.4.4 只要一个项目有子项目必须是pom类型
3.5 Name:名字
3.6 Description:项目描述
3.7 Parent Project 只有在建父项目的时候才用
Maven项目的目录结构(jar)
1.src/main/java 真实目录的快捷目录,写java代码
2.src/main/resources 快捷目录
2.1 存放配置文件的
2.2 虽然看见resources但是里面所有配置文件最终会被编译放入到classes类路径
4.src/test/java 写测试java代码的
5.src/test/resources 测试的配置文件
6.pom.xml maven的配置文件
6.1 当前项目所依赖的其他项目或jar或插件等。
Maven项目之间的关系
1.依赖关系
1.1 标签<dependency>把另一个项目的jar引入到当前项目
1.2 自动下载另一个项目所依赖的其他项目
2.继承关系
2.1 父项目一定是 pom 类型
2.2 子项目 jar 或 war ,如果子项目还是其他项目的父项目,子项目还是pom类型
2.3 有继承关系后,子项目中会出现 <parent> 标签
2.3.1 如果子项目的 <groupId> 和 <version> 与父项目相同,在项目中可以不配置
<parent>
<groupId>com.ly</groupId>
<artifactId>Maven03</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
2.4 父项目的 pom.xml 中是看不到有哪些子项目的,在逻辑上具有父子项目关系
3.聚合关系
3.1 聚合关系的前提是继承关系,父项目会把子项目包含到父项目中
3.2 子项目的类型必须是 Maven Module 而不是 Maven Project
3.3 新建聚合项目的子项目时,点击父项目右键新建 Maven Module
3.4 具有聚合关系的父项目,在 pom.xml 中 <modules>
<modules>
<module>Maven05-child2</module>
</modules>
3.5 具有聚合关系的子项目,在 pom.xml 中 <parent>
<parent>
<groupId>com.ly</groupId>
<artifactId>Maven03</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>Maven05-child2</artifactId>
4.聚合项目和继承项目区别
4.1 在语意上聚合项目父项目和子项目关系性较强
4.2 在语意上单纯继承项目父项目和子项目关系性较弱
5.<dependencyManagement> 写在父项目
5.1 作用:声明可能使用到的所有jar
5.2 子项目中只需要有坐标的 <groupId> 和 <artifactId>。 <version>继承父项目
5.3 在父项目中 <properties> 把所有版本进行统一管理
5.4 父项目 pom.xml
5.4.1 其中 <properties> 的子标签名称是自定义的
5.4.2 通过 ${名字} 可以来引用标签的值
<properties>
<spring-version>4.1.6.RELEASE</spring-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
5.5 子项目
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
创建 war 类型项目
1.war web-jar 的缩写
2.创建 maven project 时选择 packaging 为 war
3.在webapp 文件夹下新建 META-INF 和 WEB-INF/web.xml
4.在 pom.xml 中添加 java ee 相关的三个jar包
4.1 <scope> jar 包的有效范围 provided表示编译器生效,不会打包发布到tomcat
<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.ly</groupId>
<artifactId>Maven06-war</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<!-- 定义jar包使用范围的 -->
<!-- provided 只在编译器中有效 -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<!-- provided 只在编译器中有效 -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 控制tomcat的端口号 -->
<configuration>
<port>80</port>
<!-- 控制项目发布到tomcat后的名称 -->
<!-- / 相当于吧项目发布名称为ROOT -->
<!-- /abc -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
5.配置tomcat插件
5.1 <port> tomcat端口号 可以随意换
5.2 <path> 项目名称
6.右键项目--> run as --> maven build --> Goals 中输入 clean tomcat7:run
资源拷贝插件
1.maven默认只把 src/main/resources 里面的非java文件进行编译到classes中
2.如果希望 src/main/java 下的文件也被编辑到classes中,在pom.xml中配置
2.1 下面内容配置在 <build> 中
<!-- 资源拷贝插件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
热部署
1.修改tomcat/conf/tomcat-users.xml中添加
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="123456" roles="manager-gui,manager-script"/>
2.在 maven 项目的 pom.xml中 tomcat 的<configuration>中配置
2.1 当使用本地tomcat时 <port> 就无效了
2.2 <path> 是有用的 项目发布后的名称
<plugins>
<!-- tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 控制tomcat的端口号 -->
<configuration>
<port>80</port>
<!-- 控制项目发布到tomcat后的名称 -->
<!-- / 相当于吧项目发布名称为ROOT -->
<!-- /abc -->
<path>/abc</path>
<username>tomcat</username>
<password>123456</password>
<url>http://192.168.160.131:8080/manager/text</url>
</configuration>
</plugin>
</plugins>
3.右键项目 --> run as --> maven build(以前写过,选择第二个) --> 输入
3.1 tomcat7:deploy 第一次发布
3.2 tomcat7:redeploy 不是第一次发布