Maven简介

Maven是一个项目管理和综合工具,提供完整的生命周期框架,方便大型项目的模块化管理。它解决了频繁复制jar包的问题,通过统一的POM文件配置依赖,并从仓库下载。Maven的仓库分为本地和远程,依赖解析根据坐标查找jar包。生命周期包括Clean、Default和Site,用于编译、测试、打包和部署。POM.xml是核心配置文件,properties标签可用于统一管理版本号。
摘要由CSDN通过智能技术生成

以前老是写代码,也没有深深的研究jar的管理。直到接触一些大数据的MapReduce编程,才了解到Maven项目管理。

想必要,我就提出了两个疑问。为什么要使用Maven,Maven又是什么呢?

Why?

我以前写的代码项目只是一些阿猫阿狗的项目,也就是个简易的图书管理系统或成绩管理系统,但是当项目非常庞大时,就不适合用package来划分模块,这个时候就需要每一个模块对应一个工程就有利于协作。

Maven可以解决你使用jar包的烦恼情况

  • 频繁的调用某个jar包,不停的复制jar包到项目的lib中,当你使用Maven时,就可以将jar包保存在仓库中,使用时,只要引用就可以了
  • 借助Maven,可以统一的在官网上下载
  • 可以很好的区分jar包的版本,在应用jar包时,借助Maven也可以很好的导入

What?

Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动的完成项目的基础工具项目,Maven使用标准的目录结构和默认生命周期。

使用Maven也可以构建,把动态的Web工程经过编译结果部署到服务器上的整个过程。编译就是让java文件转变成class文件,部署就是在sevlet容器中运行的是编译后的文件。

How?

创建一个Maven项目


 1. 根目录:工程名
 2. |---src:源码
 3. |---|---main:存放主程序
 4. |---|---|---java:java源码文件
 5. |---|---|---resource:存放框架的配置文件
 6. |---|---test:存放测试程序
 7. |---pom.xml:maven的核心配置文件

在这里插入图片描述
POM文件内容
pom.xml:Project Object Model项目对象模型。它是maven的核心配置文件,所有的构建的配置都在这里设置

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.imooc.bigdata</groupId>
  <artifactId>hadoop-train-v2</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>hadoop-train-v2</name>
  <url>http://maven.apache.org</url>




  <properties>
    <!--定义Hadoop版本-->
    <hadoop.version>2.6.0-cdh5.15.1</hadoop.version>
  </properties>

  <!---引入cdh的仓库-->
  <repositories>
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
  </repositories>

  <dependencies>
    <!--添加Hadoop依赖包-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>

    <!--添加junit依赖包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>utf8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

常用Maven命令


 1. mvn clean:清理
 2. mvn compile:编译主程序
 3. mvn test-comilt:编译测试程序
 4. mvn test:执行测试
 5. mvn package:打包
 6. mvn install:安装

需要注意的是执行maven命令必须要进入到pom.xml目录中进行执行
在这里插入图片描述

仓库默认位置:c:Users[登录当前系统的用户名].m2 repository

坐标

<dependenciens>
	<dependency>
	<!--1、公司或组织域名倒序+项目名-->
	<groupId>org.springframework</groupId>
	<!--2、模块名-->
	<artifactId>spring-core</artifactId>
	<!--3、版本-->
	<version>4.3.4.RELEASE</version>
	<scope>comile</scope>
	</dependency>
<dependenciens>

maven工程的坐标与仓库路径的关系

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.imooc.bigdata</groupId>
  <artifactId>hadoop-train-v2</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>hadoop-train-v2</name>
本项目坐标

<dependencies>
    <!--添加Hadoop依赖包-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
</dependencies>
依赖的项目的坐标

去本地仓库查看一下这个项目

在这里插入图片描述
这下来对Maven的仓库、依赖、生命周期做出一些介绍

仓库分类:

  • 本地仓库:当前电脑上的仓库
  • 远程仓库:1)私服:搭建在局域网中,一般公司都有私服
    2)中央仓库:架设在Internet上

依赖:

  • maven解析依赖信息时(根据maven坐标)会到本地仓库中曲查找被依赖的jar包
    -如果依赖的是自己或者团队开发的maven工程,需要先使用install命令把被依赖的maven工程的jar包导入本地仓库

eg.本人创建一个工程,缺少依赖的jar包(其他项目有这个jar包),就需要到其他有这个jar包的项目中,执行mvn install命令

依赖范围:

  1. compile,默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段
  2. provided,只在开发、测试阶段适用,目的是不让Servlet容器和你本地jar包冲突
  3. runtime,只在运行时适用,如jdbc
  4. test,只在测试使用
  5. system,类似provided,需要显式提供包含依赖的jar

生命周期:

Maven有三套互相独立的生命周期,相互独立

Clean Lifecycle在进行真正的构建之前进行一些清理工作。

  1. pre-clean执行一些需要在clean之前完成的工作
  2. clean移除所有上一次构建生成的文件
  3. post-clean执行一些需要在clean之后立刻完成的工作

Default Lifecycle构建的核心部分,编译,测试,打包,部署


1、validate
2、generate-sources
3、process-sources
4、generate-resources
5、process-resources     复制并处理资源文件,至目标目录,准备打包
6、compile     编译项目的源代码
7、process-classes
8、generate-test-sources
9、process-test-sources
10、generate-test-resources
11、process-test-resources     复制并处理资源文件,至目标测试目录
12、test-compile     编译测试源代码
13、process-test-classes
14、test     使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
15、prepare-package
16、package     接受编译好的代码,打包成可发布的格式,如 JAR 
17、pre-integration-test
18、integration-test
19、post-integration-test
20、verify
21、install     将包安装至本地仓库,以让其它项目依赖。
22、deploy     将最终的包复制到远程的仓库,以让其它开发人员与项目共享

Site Lifecycle生成项目报告,站点,发布站点

1、pre-site 执行一些需要在生成站点文档之前完成的工作
2、site    生成项目的站点文档
3、post-site     执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
4、site-deploy     将生成的站点文档部署到特定的服务器上

注意的是:为了统一管理版本号,可以使用properties标签,里面可以自定义版本的标签名。在使用的地方使用${自定义标签名}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值