maven项目管理工具的使用

一个项目管理工具,能够帮助你的项目构建以及部署加快。

maven的上下一体

1.Maven 简介
2.Maven 的安装和配置
3.Maven 仓库
4.Maven 入门
5.Maven 核心概念解析
6.Maven 的依赖管理
7.Eclipse 中创建 Maven JAVEWEB 项目
8.Maven 的继承
9.Maven 的聚合

maven简单的说是一个项目集管理工具

一个项目里面包含什么内容,无非是java代码,资源,甚至是相关的一些jar包,如何摆放

多个项目之间是否存在关系,是否需要相互照应,是否能够将项目直接放置在tomcat中,那么这些都需要靠maven来进行操作

maven的简介说明

一个普通的web项目需要在lib中引入大量的jar包,maven可以帮助我们添加需要的jar包
一个工具包可能需要依赖其它的jar包作为支撑,比如使用log4j的时候需要依靠通用的common-io包,maven可以帮助的项目做依赖jar包
一些jar包有着不同的版本,每个项目可能需要的jar包不一样,从哪里来。maven提供了一个中央仓库供大家下载
多模块拆分,以前常见使用package的方式进行分层能够解决基本的问题,但随着项目越来越大,那么我们要进行细化,直接使用package分并不够。那么通过我们可以通过maven进行拆分,并且统一进行管理

关于构建 (结构化的建立)(也就是有一种标准式的建立方式)

maven主要有一下几个动作

clean 清理:删除编译的内容,做好重新编译的准备
complie 编译:也就是将代码编译为class文件
test 测试:对项目中的某个模块业务进行测试,以确保的结果的准确性
report 报告:有测试完毕的情况下,有对应的报告生成
package 打包:将一个文件或者多个进行jar或者war包打包
install 安装:将jar包或者war包安装到本地仓库中
deploy 部署:将war包部署到服务器容器中

maven的安装与配置

maven下载地址:http://maven.apache.org/download.cgi
在这里插入图片描述
windows配置环境变量(注意:可能需要设置JAVA_HOME变量)

mac中加入 bash_profile (可执行的配置文件)
cat ~/.bash_profile
#add maven_home
MAVEN_HOME=/Users/Yun/Documents/maven/apache-maven-3.3.9
PATH= P A T H : PATH: PATH:MAVEN_HOME/bin
export MAVEN_HOME

使用mvn -v 命令查看maven版本 (验证是否安装成功)
在这里插入图片描述
修改使用maven下载jar包存放仓库的位置(路径自行选择)
在config-setting.xml中 更改/Users/Yun/Documents/maven/repo
设置镜像仓库(maven默认仓库假设在美国,国内有锁,下载十分缓慢)

<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

后期为了保证项目统一的jdk版本在中加入(JDK更改即可)

<profile>  
        <id>jdk18</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>  
maven仓库的概念

本地仓库 (本地maven存放的文件)
远程仓库 (来自五湖四海汇集到一起)
私服 (开发中,都有自己搭建的私服,其实就是私有仓库)
中央仓库和镜像 中央仓库只有一个,镜像是中央仓库的克隆,用于分担中央仓库的压力

maven入门

eclipse中配置maven路径(默认是自动识别)
在这里插入图片描述
加载maven配置文件

在这里插入图片描述
构建一个mavenproject(勾选创建一个简单的maven项目)

在这里插入图片描述
目录结构如下:
在这里插入图片描述
观察一下pom.xml(自行加入junit)

<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.wwj</groupId>
	<artifactId>maven001</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.0</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

在src/main/java 以及 src/test/java中

public class HelloMaven {
	public String sayHello(String name){
		return "Hello "+name+"!";
		}
}
import static org.junit.Assert.*;
import org.junit.Test;
import com.wwj.hell.HelloMaven;

public class HelloMavenTest {
	@Test
	public void testHello(){
	HelloMaven hello = new HelloMaven();
	String results = hello.sayHello("wwj");
	//用于判别内容是否一致
	assertEquals("Hello wwj!",results);
	}
}

切换到项目根目录下执行
mvn compile (注意观察info)
在这里插入图片描述
mvn clean (注意观察info)
在这里插入图片描述
mvn test (注意观察info)
在这里插入图片描述
会新增一个测试报告
在这里插入图片描述
mvn package (注意观察info) (compile->test->package)
在这里插入图片描述

Maven 核心概念解析(pom,目录结构,坐标)

pom.xml文件对整体项目文件的管理。认知maven就是认知pom.xml文件

src/main/java 为项目的逻辑代码存放地 src/main/resource 为项目资源配置文件,同理测试目录为测试文件与资源的存放地

target为compile存放文件的位置

坐标主要的目的一个项目能从maven仓库中找到需要的内容,而这个内容需要有一个标识

<groupId>com.wwj</groupId>
	<artifactId>maven001</artifactId>
	<version>0.0.1-SNAPSHOT</version>

执行 mvn install (观察info) 相当于打包jar包放置与本地仓库中
在这里插入图片描述

Maven 的依赖管理

依赖管理 中有一个标签叫 , scope有3个选项compile,test,provided

compile 编译 主要为项目主业务代码 从前到后使用
test 测试 主要提供给测试业务代码 仅仅只在test使用
provided 可提供的 也就是从编译到测试使用,可以理解为仅仅只在项目中使用,部署后由容器本身提供

1.项目依赖传递概念

(1). 假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A。 那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中。这就是依赖的传递性。并且C对B的支撑要达到complie级别,A才能够可见到C. 其余级别不支持

(2). 如果C现在不要A (使用exclusion)

<exclusions>
            <exclusion>
              <!--被排除的依赖包坐标-->
              <groupId>A</groupId>
              <artifactId>A</artifactId>
              <version>0.0.1</version>
            </exclusion>
         </exclusions>
统一版本管理
    <properties>
			<wwj.junit>4.0</wwj.junit>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${wwj.junit}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
Eclipse 中创建 Maven JAVEWEB 项目 (勾选简单的maven项目

在这里插入图片描述

项目右键勾选属性:

在这里插入图片描述

maven的继承 (多个子项目都需要某些依赖, 就可以把子项目共同的依赖抽取到父项目中,子项目通过继承得到这些依赖)

构建父项目(打包方式为pom)
在这里插入图片描述
父项目使用 dependencyManagement 标签来管理,optional表示子 pom 无论如何都不能继承(已经失效)

<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.wwj</groupId>
  <artifactId>maven003</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <dependencyManagement>
    <dependencies>
        <!-- 子 pom 可以继承 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>
</dependencyManagement>
</project>

子项目使用父项目的依赖

<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.wwj</groupId>
	<artifactId>maven004</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<parent>
		<!-- 父项目坐标 -->
		<groupId>com.wwj</groupId>
		<artifactId>maven003</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<!-- 父项目 pom 文件路径 -->
		<relativePath>../maven003/pom.xml</relativePath>
	</parent>
	<dependencies>
        <!-- 不需要版本, 会从父项目继承, 如果指定版本就是代表不是来自父 pom 而是子 pom 自己的. -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
    </dependencies>
</project>
9.maven聚合 (将功能模块拆分,最常见的我们整合ssm的时候会将service和dao进行拆分,当然也可以以项目的方式)

在这里插入图片描述
创建父模块(父模块一般承担聚合模块和统一管理依赖的作用,没有实际代码和资源文件) (打包方式为pom.xml)

右键父项目创建子模块module
在这里插入图片描述

在这里插入图片描述

分别观察到父亲管理那些模块,儿子的父亲是谁

父模块做统一管理

<properties>
  	<wwj.json>1.2.47</wwj.json>
  </properties>
    <dependencyManagement>
    <dependencies>
        <!-- 子 pom 可以继承 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${wwj.json}</version>
        </dependency>
  </dependencies>
  </dependencyManagement>

子模块直接进行依赖

<dependencies>
		<!-- 子 pom 可以继承 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
		</dependency>
	</dependencies>

切换到maven父项目执行mvn install (观察info)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值