MAVEN全网最详版,没有之一

1.定义

** Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具**

  • 1.构建 – Java 项目开发过程中,构建指的是使用『原材料生产产品』的过程其步骤如下:

  • 清理:删除上一次构建的结果,为下一次构建做好准备

  • 编译:Java 源程序编译成 *.class 字节码文件

  • 测试:运行提前准备好的测试程序

  • 报告:针对刚才测试的结果生成一个全面的信息

  • 打包:Java工程:jar包 ,Web工程:war包

  • 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库

  • 部署:

  • 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上

  • 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上

  • 2.依赖

  • 如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B

1、安装以及配置

这是 maven下载地址**

在这里插入图片描述

2、 解压Maven核心程序

核心程序压缩包:apache-maven-3.8.4-bin.zip,解压到非中文、没有空格的目录。例如:
在这里插入图片描述
在解压目录中,我们需要着重关注 Maven 的核心配置文件:conf/settings.xml

3、指定本地仓库

本地仓库默认值:用户家目录/.m2/repository,一般建议将 Maven 的本地仓库放在其他盘符下(放在C盘,随着jar越来越多电脑会卡)。配置方式如下:

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\maven-repository</localRepository>

注意:本地仓库本身也需要使用一个非中文、没有空格的目录,一定要把 localRepository 标签从注释中拿出来。

4、配置阿里云提供的镜像仓库

①将原有的例子配置注释掉

<!-- <mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
  <blocked>true</blocked>
</mirror> -->

②加入我们的配置

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

5、配置 Maven 工程的基础 JDK 版本

<profile>
	  <id>jdk-1.8</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>

2、配置环境变量

1. 检查 JAVA_HOME 配置是否正确,因为Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。

在这里插入图片描述
可以使用下面的命令验证:

C:\Users\Administrator>echo %JAVA_HOME%
D:\software\Java

C:\Users\Administrator>java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

2. 配置 MAVEN_HOME。
在这里插入图片描述

配置环境变量的规律:

  • XXX_HOME 通常指向的是 bin 目录的上一级
  • PATH 指向的是 bin 目录

3. 验证是否按照完成 执行mvn -v命令。

C:\Users\Administrator>mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: D:\software\apache-maven-3.8.4
Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: D:\software\Java\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

6、Maven 核心概念

1.坐标

  • groupId:公司或组织的 id,通常也会加上项目名称
  • artifactId:一个项目或者是项目中的一个模块的 id
  • version:版本号

2.POM
POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现,对应maven工程中根目录下 pom.xml 这个配置文件。

2.约定目录结构
在这里插入图片描述

约定目录结构的意义

Maven 为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。例如:Maven 执行编译操作,必须先去 Java 源程序目录读取 Java 源代码,然后执行编译,最后把编译结果存放在 target 目录。

约定大于配置

Maven 对于目录结构这个问题,没有采用配置的方式,而是基于约定。这样会让我们在开发过程中非常方便。如果每次创建 Maven 工程后,还需要针对各个目录的位置进行详细的配置,那肯定非常麻烦。

7、Maven 常用命令

mvn archetype:generate -DarchetypeGroupId=com.uicsoft.xpf -DarchetypeArtifactId=use-study -DarchetypeVersion=1.4 – 使用命令指定坐标生成Maven工程

  • mvn archetype:generate – 使用命令生成Maven工程
  • mvn clean --清理操作 就是 删除 target 目录
  • mvn compile --主程序编译,将java程序编译成.class文件,完成之后放在target/classes目录下
  • mvn test-compile --测试程序编译,完成之后放在target/test-classes目录下
  • mvn test --测试的报告存放的目录:target/surefire-reports
  • mvn package --打包成jar 包(或war包),存放的目录:target
  • mvn install --安装 是将本地构建过程中生成的 jar 包存入 Maven 本地仓库

8、Maven 依赖传递与排除

  • 依赖:在 A 依赖 B,B 依赖 C 的前提下,C 是否能够传递到 A,取决于 B 依赖 C 时使用的依赖范围,只有使用 compile 范围:可以传递, test 或 provided 范围不予传递,注意一点:防止循环依赖
  • 排除:阻止某些 jar 包的传递,放在jar冲突,用标签 不需要写version 如下图所示
<dependency>
	<groupId>com.atguigu.maven</groupId>
	<artifactId>pro01-maven-java</artifactId>
	<version>1.0-SNAPSHOT</version>
	<scope>compile</scope>
	<!-- 使用excludes标签配置依赖的排除	-->
	<exclusions>
		<!-- 在exclude标签中配置一个具体的排除 -->
		<exclusion>
			<!-- 指定要排除的依赖的坐标(不需要写version) -->
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>

maven最详细教程,请点击

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值