睁眼写BUG,闭眼改BUG。

Maven简单入门

2020.03.02

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.查看坐标网址

https://mvnrepository.com/

新建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 不是第一次