工具Maven

Posted Beyong2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具Maven相关的知识,希望对你有一定的参考价值。

文章目录

0.Maven安装(不使用IDEA内置)

(1)3.3.9 适合 jdk1.8

(2)解压到一个文件夹,路径不含有中文

(3)配置环境变量

name M2_HOME
value D:\\dev\\maven\\maven3.3.9\\apache-maven-3.3.9-bin\\apache-maven-3.3.9


注意之前要配置JAVA_HOME

(4)安装正确

(5)默认仓库(本地仓库地址)

备份settings.xml

1.Maven的作用

  • 管理依赖
    jar包的管理,应用,版本
  • 构建项目
    完成项目的编译,测试,打包,部署

2.Maven核心概念

  • POM
    项目对象模式,Maven把一个项目当做一个模型,控制Maven项目构建的过程,管理Jar包。
  • 约定的目录结构
    每一个Maven项目的目录和文件都是有特定位置的。
  • 坐标
    唯一标识符,标识资源。
  • 依赖管理
    管理jar包。
  • 仓库管理
    资源存储的位置。
  • 生命周期
    maven项目构建过程
  • 插件和目标
    执行maven构建时使用的工具是插件
  • 继承
  • 聚合

3.maven目录结构

4.仓库

本地仓库, 就是你的个人计算机上的文件夹,存放各种jar

远程仓库, 在互联网上的,使用网络才能使用的仓库
①:中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,
https://repo.maven.apache.org :中央仓库的地址
②:中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像。
③:私服,在公司内部,在局域网中使用的, 不是对外使用的。

5.pom文件

5.1 坐标 gav

 <groupId>公司域名的倒写</groupId>
 <artifactId>自定义项目名称</artifactId>
 <version>自定版本号</version>

https://mvnrepository.com/ 搜索使用的中央仓库, 使用groupId 或者 artifactId作为搜索条件

开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—>镜像—>中央仓库

5.2.packaging

打包后压缩文件的扩展名,默认jar,web应用默认war

5.3.依赖

<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependencies>
  <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.32</version>
  </dependency>
</dependencies>

5.4.配置属性

properties 设置属性

5.5.build

项目进行构建时,使用的配置信息

6.Maven生命周期

maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署

maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。maven可以使用命令,完成项目的清理,编译,测试等等

maven的插件: maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。

7.junit 单元测试

专门测试程序方法

testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值, 必须的
3.方法名称是自定义的,推荐是Test + 方法名称
4.在方法的上面加入 @Test

8.插件

9.IDEA构建Maven

不使用内置的Maven

(1)设置之后新建项目使用配置



10.创建javase项目

(1)新建空工程


(2)使用骨架创建模块


修改配置

生命周期 插件 依赖

11.web工程

(1)maven构建项目


手动添加,补充完整

(2)创建servlet
在com.sdnu.controller下快捷键alt + insert ,搜索servlet

HelloServlet

package com.sdnu.controller;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print("Hello Maven Web");
        out.flush();
        out.close();
    

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print("Hello Maven Web");
        out.flush();
        out.close();
    

web.xml

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.sdnu.controller.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

(3)添加依赖

    <!--加入servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!--加入jsp依赖-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>

index.jsp

<html>
	<body>
		<h2>Hello World!</h2>
		<a href="hello">访问servlet</a>
	</body>
</html>

(4)部署项目





(5)打包


最终得出一个war包

12.依赖的范围

13 Maven常用属性

Maven属性设置

<properties> 设置maven的常用属性

Maven全局变量

自定义的属性,1.在<properties> 通过自定义标签声明变量(标签名就是变量名)
	         2.在pom.xml文件中的其它位置,使用 $标签名 使用变量的值

	自定义全局变量一般是定义 依赖的版本号, 当你的项目中要使用多个相同的版本号,
	先使用全局变量定义, 在使用$变量名

Maven项目构建工具

目录

        1.Maven介绍

                1.1Maven是什么

                1.2为什么要使用maven

        2.Maven安装

                2.1下载Maven:

                2.2解压并配置

                2.3编辑Maven环境变量

                        2.3.1检查JDK环境变量

                ​​​​​​​        2.3.2  配置maven_home环境变量

          3.Maven配置

                3.1仓库类型

                 3.2本地仓库配置

                 3.3远程镜像配置

           4.Maven常用命令 

                ​​​​​​​        4.1 通过命令来构建项目

                ​​​​​​​        4.2 对项目进行打包

                ​​​​​​​        4.3 将项目安装到本地仓库


1.Maven介绍

1.1Maven是什么

** Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。**
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs

知识点总结: ** Maven项目对象模型(POM) 主要管理项目的构建,报告和文档的项目管理工具软件。**

1.2为什么要使用maven

由于 Java 的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以 jar包的形式出现的,jar包之间会有关联,在使用一个依赖之前,还需要确定这个依赖所依赖的其他依赖,所以,当项目比较大的时候,依赖管理会变得非常麻烦臃肿,这是 Maven 解决的第一个问题。

Maven 还可以处理多模块项目。简单的项目,单模块分包处理即可,如果项目比较复杂,要做成多模块项目,例如一个电商项目有订单模块、会员模块、商品模块、支付模块...,一般来说,多模块项目,每一个模块无法独立运行,要多个模块合在一起,项目才可以运行,这个时候,借助 Maven 工具,可以实现项目的一键打包。

Maven 之前,我们更多的是使用Ant的项目构建工具,Ant 有一个特点,每次都得写,每次都写的差不多,配置也臃肿。所以,后来搞出来Maven。Maven就是最先进的版本构建工具吗?不是的,只不过,目前在 Java 领域 Maven 使用比较多。除了 Maven,还有 Gradle。

2.Maven安装

Maven是 Java项目,因此必须先安装 JDK。

2.1下载Maven:

下载地址:http://maven.apache.org/download.cgi

2.2解压并配置

 ​​​​​​

bin: 该目录包含了mvn运行的脚本,分别为mvn、mvn.bat、mvnDebug、mvnDebug.bat和m2.conf,这些脚本用来配置 Java 命令,准备 CLASSPATH 和相关的 Java 系统属性,然后执行 Java 命令
boot: 该目录只包含一个文件,以maven 3.0为例,该文件为plexus-classworlds-2.2.3.jar。plexus-classworlds是一个类加载器框架,相对于默认的 Java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库。
conf: 该目录包含了要给非常重要的文件settings.xml。直接修改该文件,就能再机器上全局地定制 Maven 的行为。一般情况下,我们更偏向于复制该文件至/.m2/目录下(表示用户目录),然后修改该文件,在用户范围定制 Maven 的行为。
lib: 该目录包含了所有 Maven 运行时需要的 Java 类库,Maven 本身是分模块开发的,因此用户能看到诸如maven-core-3.0.jar和maven-model-3.0.jar之类的文件。
LICENSE: 该文件记录了 Maven 使用的软件许可证
NOTICE:该文件记录了 Maven 包含的第三方软件。
README.txt: 该文件则包含了 Maven 的简要介绍,包括安装需求以及如何安装的简要指令等。

2.3编辑Maven环境变量

2.3.1检查JDK环境变量

1.配置Java_Home环境变量

 2.通过DOS命令窗口 检查配置是否有效

2.3.2  配置maven_home环境变量

1.配置MAVEN_HOME

 2.配置环境变量

 3.检查Maven是否有效 重启DOS窗口

 3.Maven配置

实际上,没有特殊需求的话,安装好之后直接就可以用了。一般来说,还是需要稍微配置一下,比如中央仓库的问题。Maven默认使用自己的中央仓库,使用起来网速比较慢,这个时候,可以通过修改配置文件,将仓库改成国内的镜像仓库,国内仓库使用较多的是阿里巴巴的仓库。

3.1仓库类型

仓库类型        说明
本地仓库

就是你自己电脑上的仓库,每个人电脑上都有一个仓库,默认位置在当前用户名\\.m2\\repository

私服仓库

一般来说是公司内部搭建的 Maven私服,处于局域网中,访问速度较快,这个仓库中存放的 jar一般就是公司内部自己开发的 jar

中央仓库

由 Apache团队来维护,包含了大部分的 jar,早期不包含Oracle数据库驱动,从 2019年 8月开始,包含了 Oracle 驱动

现在存了三个仓库,那么jar包如何查找呢?

 3.2本地仓库配置

本地仓库默认位置在当前用户名\\.m2\\repository,这个位置可以自定义,但是不建议大家自定义这个地址,有几个原因:

  1. 虽然所有的本地的 jar都放在这个仓库中,但是并不会占用很大的空间。
  2. 默认的位置比较隐蔽,不容易碰到

技术上来说,当然是可以自定义本地仓库位置的,在 conf/settings.xml中自定义本地仓库位置:

<localRepository>f:\\My-Maven-Repository</localRepository>

 3.3远程镜像配置

由于默认的中央仓库下载较慢,因此,也可以将远程仓库地址改为阿里巴巴的镜像仓库地址:

<mirror>
  <id>alimaven</id>
  <mirrorOf>central</mirrorOf>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

 这段配置,加在 settings.xml中的 mirrors节点中:

4.Maven常用命令 

 Maven中有一些常见的命令,如果使用Eclipse需要手动敲命令,如果使用 IDEA的话,可以不用命令,直接点点点就可以了

常用命令 中文含义 说明

mvn clean

清理

这个命令可以用来清理已经编译好的文件

mvn compile

编译

将 Java代码编译成Class文件

mvn test

测试

项目测试

mvn package

打包

根据用户的配置,将项目打成 jar包或者 war包

mvn install

安装/部署

手动向本地仓库安装一个 jar

mvn deploy

上传

将 jar上传到私服

这里需要注意的是,这些命令都不是独立运行的,它有一个顺序。举个简单例子:

我想将jar上传到私服,那么就要构建jar,就需要执行package命令,要打包,当然也需要测试,那就要走mvn test 命令,要测试就要先编译.............................. ,因此,最终所有的命令都会执行一遍。不过,开发者也可以手动配置不执行某一个命令,这就是跳过。一般来说,除了测试,其他步骤都不建议跳过。

当然,如果开发者使用了 IDEA,这些命令不用手动敲,点一下就行:

1.validate 验证工程是否正确,所有需要的资源是否可用。 命令: mvn validate
2.compile 将文件由.java文件编译为.class文件 动态生成target文件目录 命令: mvn compile
3.clean 清空target文件目录 命令: mvn clean
4.test 执行测试方法是否正确 命令: mvn test
5.package 将项目的target文件打包为jar包文件 命令: mvn package
6.verify 对集成测试的结果进行检查,以保证质量达标 命令: mvn verify
7.install 安装打包的项目到本地仓库,以供其他项目使用 命令: mvn install
8.site 项目站点文档创建的处理 命令: mvn site
9.deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 (了解 用不到)

4.1 通过命令来构建项目

可以直接通过命令来构建一个 Maven项目,不过在实际开发中,一般使用Eclipse或者 IDEA就可以直接创建 Maven项目了。创建命令:

mvn archetype:generate

需要注意:第一次使用该命令,会先下载构建项目所需的jar包

项目创建成功后,就两个文件:

说明对一个任何一个项目而言,最最核心的就是这两个。

pom.xml中,则定义了所有的项目配置

4.2 对项目进行打包

接下来,我们通过mvn package命令可以将刚刚创建的项目打成一个 jar包。

在打包之前,需要配置JDK的版本至少为 7以上,因此,我们还需要手动修改一下pom.xml 文件,即添加如下配置:

<!-- java版本 --> 
	<profile>
		  <id>jdk-11</id>
		  <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>11</jdk>
		  </activation>

		  <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
		  </properties>
	</profile>

执行打包命令,注意执行所有命令时,命令行要定位到 pom.xml文件所在的目录,看到如下提示,表示项目打包成功。

4.3 将项目安装到本地仓库

如果需要将项目安装到本地仓库,可以直接执行 mvn install命令,注意,mvn install命令会包含上面的 mvn package 过程。

安装到本地仓库之后,这个时候,点开自己的本地仓库,就可以看到相关的 jar了。

以上是关于工具Maven的主要内容,如果未能解决你的问题,请参考以下文章

Mavenmaven简介

MavenMaven常用命令

mavenmaven自带的插件

Mavenmaven依赖

Mavenmaven依赖

Maven实战之初识MavenMaven的简单介绍