maven
必学!
必备工具之一!!
Maven
Ant
- Ant 和 Maven 都是项目构建工具
- 在项目的运行编辑打包过程都需要依赖于ant 构建工具
分布式
1.传统项目部署
- 新建一个项目,通过不同的包区分不同的模块
- 把这个项目发布服务器的 tomcat 中
2.分布式项目部署(适用于高负载情况下)
- 把一个完整的项目拆分成多个项目,把拆分后的项目分别部署到对应的服务器(tomcat)中的过程就叫做分布式项目部署
- 把传统项目包 换成一个单独的项目
maven 简介
基于Ant 的构建工具, Ant 有的功能 Maven 都有
1.运行原理
- 本地仓库:计算机中一个文件夹,自己定义是那个文件夹
- 中央仓库:网上地址 https://repo1.maven.org/maven
- 下载速度慢>>配置国内镜像
- 保证 JDK 版本和开发环境一致,如果不配置 1.4或 1.5
2.坐标
- 每个jar文件都有一个唯一坐标,通过坐标可以精确确定是那个jar
- 坐标组成
- Group ID: 公司名.公司网址倒写
- Artifact ID: 项目名
- Version: 版本
3.pom
- 英文名:Project Object Mode
- 项目对象模型
- 把project 当作对象看待
- 通过maven 构建工具可以让对象(项目)和对象(项目)之间产生关系
4.查看坐标网址
新建Maven项目
1.New>>Maven project
2.勾选复选框,表示创建一个简单的 Maven 项目(不应用任何模板)
3.填写项目信息
- Packaging: 项目的类型,最终会被打包什么类型
- jar: Java项目
- war: web项目
- pom: 逻辑父项目
- 只要一个项目有子项目必须是pom类型
4.项目目录结构
- src/mian/java 真实目录的快捷目录,写 Java 代码
- src/main/resources 快捷目录
- 存放配置文件
- 虽然看见 resources 但是里面所有配置文件最终会被编辑放入到 class
- src/test/java 写测试 Java 代码
- src/text/resources 测试的配置文件夹
- pom.xml maven的配置文件
- 当前项目所有依赖的其他项目或jar 或插件
maven 项目之间的关系
1.依赖关系
- 标签
把另一个项目的jar引入到当前项目 - 自动下载另一个项目所依赖的其他项目
2.继承关系
- 父项目是 pom 类型
- 子项目 jar 或 war,如果子项目还是其他项目的父项目,子项目也是 pom 类型
- 有继承关系后,子项目中出现
标签 - 如果子项目和
和 与父项目相同可以不配置
- 如果子项目和
- 父项目 pom.xml 中是看不到有哪些子项目,在逻辑上具有父子项目关系
<parent>
<groupId>work.idler</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
3.聚合关系
- 前提是继承关系.父项目会把子项目包含到父项目中.
- 子项目的类型必须是 Maven Moudule 而不是 maven project
- 新建聚合项目的子项目时,点击父项目右键新建Maven Moudule
- 具有聚合关系的父项目,在pom.xml中
<modules>
<module>child2</module>
</modules>
- 具有聚合关系的子项目,在 pom.xml 中
<parent>
<groupId>work.idler</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
4.聚合项目和继承项目区别
- 在语义上聚合项目的父子关系较强
- 在语义上单纯继承项目父子关系较弱
5. 写在父项目
- 作用:声明可能使用到的所有jar
- 子项目中只需要有坐标
和 , 继承父项目 - 在父项目中
把所有版本好进行统一管理 - 父项目
子标签名称自定义 - ${名字}
- 子项目
创建 war 类型项目
1.创建 maven project 时选择packaging 为 war
2.在webapp 文件夹下创建 META-INF和WEB-INF文件夹,web.xml
3.在 pom.xml 中添加 java ee 相关的三个 jar
jar 有效范围 provided 表示编译期生效,不会打包发布到tomcat中
4.配置 tomcat 插件
5.右键项目>>run as>>maven build>>Goals 中输入
clean tomcat7:run
资源拷贝插件
1.maven 默认只把 src/main/resources 里面的非.java 文件进行编译到classes 中
2.如果希望 src/main/java 下的文件也被编辑到 classes 中,在 pom.xml中配置
热部署
1.修改 tomcat/conf/tomcat-users.xml 添加
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
2.在 maven 项目的 pom.xml 中 tomcat 插件的里配置
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 控制tomcat端口号 -->
<port>80</port>
<!-- 项目发布到tomcat后的名称 -->
<!-- / 相当于把项目发布名称为ROOT -->
<!-- /abc -->
<path>/ssm</path>
<username>tomcat</username>
<password>tomcat</password>
<url>https://192.168.174.128:8080/manager/text</url>
</configuration>
</plugin>
</plugins>
3.右键项目>>run as>>maven build(以前写过,选择第二个)>>输入
- tomcat7:deploy 第一次发布
- tomcat7:redeploy 不是第一次