Maven 工具

1 Maven 的基础:

是apache公司开源项目 是项目的构建工具,用来依赖管理:对jar包的统一管理

1.1 Maven的好处

  1. 使用传统的项目内存占用大 maven占用内存小 无jar包
    无jar包如何运行的?
    给出jar包的坐标信息去jar包仓库去查找jar包

1.2 Maven的好处如何实现

Maven的两大核心:
依赖管理:对jar包的管理过程
项目构建:项目编码完成后,对项目进行编译 测试 部署 这一系列的操作都可以通过命令来实现
通过maven的命令发布到tomcat上 :找到maven的工程目录,然后
mvn tomcat: run
在这里插入图片描述

1.3 Maven的安装

Maven程序安装前提:maven程序java开发 他运行依赖jdk

  1. 将maven解压到本地磁盘(解压的目录不要有中文和空格)
    在这里插入图片描述
    Bin 可执行脚本文件
    Conf 配置文件
    Lib jar包
    Boot是类加载器
  2. 配置环境变量
    Jdk的环境变量必须是java—home
    在这里插入图片描述
    将maven_home配置到path环境中
    在这里插入图片描述
    在这里插入图片描述

1.4 配置本地仓库

存放jar包
在这里插入图片描述

  1. 寻找jar包
  2. 解压到本地磁盘
  3. 配置本地仓库(目的:让maven程序知道jar包在哪)
    Setting.xml中
    配置本地仓库的路径

在这里插入图片描述

1.5 Maven项目标准目录结构

在这里插入图片描述
对项目的文件进行了一些细分
在这里插入图片描述

1.6 Maven的常用命令

  • 1.清理文件
    Clean:清理:将项目根目录下 target目录清理掉
  • 2 Compile:编译
    将项目java文件编译为.class文件
  • 3.Test 执行单元测试
    单元测试类名有要求:xxxxTest.java
    将项目根目录下src/test/java目录下的单元测试类都会执行
  • 4 Package:打包
    Web project----war包
    Java project-----jar包
    将项目打包,打包到项目的根目录taget目录
  • 5.Install:安装
    本地多个项目共用一个jar包
    打包到本地仓库
  • 6 Maven项目的生命周期 在一套生命周期内 执行后面的命令 前面的操作会自动执行
    在maven中存在三套生命周期 每一套生命周期都是相互独立的 互不影响
    CleanLifeCycle 清理的生命周期 clean
    DefaultLifeCycle 默认生命周期 compile test package install deploy
    SiteLifeCycle 站点生命周期 site

1.7 Maven整合web项目的案例

1.7.1 Eclipse配置maven环境

  1. 配置maven插件 m2e插件
    在这里插入图片描述
    在这里插入图片描述
  2. 需要配置maven程序
  3. 构建索引
    在这里插入图片描述

1.7.2 使用maven整合servlet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.itcast.maven</groupId>
	<artifactId>maven-crm</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>web工程,包括jsp、action等</name>
	<description>web工程,包括jsp、action等</description>

	<!-- 属性 -->
	<properties>
		<spring.version>4.2.4.RELEASE</spring.version>
		<hibernate.version>5.0.7.Final</hibernate.version>
		<struts.version>2.3.24</struts.version>
	</properties>

	<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aspects</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-orm</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-test</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-web</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.hibernate</groupId>
				<artifactId>hibernate-core</artifactId>
				<version>${hibernate.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-core</artifactId>
				<version>${struts.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-spring-plugin</artifactId>
				<version>${struts.version}</version>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<!-- 依赖管理 -->
	<dependencies>
		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
		</dependency>
		<!-- hibernate -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
		</dependency>

		<!-- 数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
			<scope>runtime</scope>
		</dependency>
		<!-- c3p0 -->

		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>
		<!-- 导入 struts2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
		</dependency>

		<!-- servlet jsp -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<!-- 日志 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
		<!-- junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.1.15</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.4</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<!-- 设置编译版本为1.7 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

创建好的maven项目有两个错误:
缺失 web.xml
在这里插入图片描述
修改jdk版本

1.7.3 创建一个serlet

在这里插入图片描述

2 maven概念模型:

两个核心:
依赖管理:对jar包的管理
项目构建:通过命令进行项目构建
在这里插入图片描述

2.1 传递依赖冲突解决

2.1.1 Maven自己调节原则

传递依赖 A(项目)依赖B,B依赖C B是A的直接依赖,C就是A的传递依赖
第一声明优先原则
近者优先原则(路径)
直接依赖级别高于传递依赖

2.1.2 排除依赖

在这里插入图片描述

2.1.3 版本锁定

在这里插入图片描述

2.1.4 引用属性 (规定版本号)

在这里插入图片描述
Ognl表达式可以在配置文件中使用

2.1.5 单元测试

  1. 批量加载spring的配置文件
    A. Classpath:spring/applicationContext-.xml
    B. Classpath
    :spring/spplicationContext-*.xml:既要加载本项目中的配置文件,还要加载jar包中的配置文件
  2. 传递依赖的范围
    在这里插入图片描述
    A;ssh-service 工程
    B:ssh-dao 工程
    C:junit单元测试
    总结:当项目中需要的某一个依赖没有传递过来,在自己工程中添加对应的依赖

2.2 通过maven整合ssh框架

在这里插入图片描述

2.3 通过maven对项目进行拆分 聚合

对现在已有的maven ssh项目进行拆分 拆分思路,将dao层代码已经配置文件全部提取出来,到一个表现上独立的工程中,同样service action拆分
Ssh-parent 父工程
Ssh-dao
Ssh-service
Ssh-web
拆分完成对拆分后的项目进行聚合,提出概念父工程

创建maven工程中的父工程 只有pom.xml可以推断父工程不能进行编码

  1. Pom文件进行定义一些依赖信息,在父工程中定义,子模块继承父工程
  2. 将各个子模块聚合到一起
    在这里插入图片描述
    将创建父工程发布到本地仓库
    将来service dao 工程发布到本地仓库,发布的service工程会报错
    如果忘记此步骤,将父工程发布到本地仓库

2.4 私服的应用

Maven的好处:
  1. 不再拷贝jar包,项目不需要存档jar包 导致项目源代码小
  2. 使用maven开发工程,如果环境统一导入别的maven的项目不会报错
  3. 代码耦合度进一步降低
  4. 项目进行升级
  5. 节省人力成本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值