Maven环境配置及介绍[通俗易懂]

Maven环境配置及介绍[通俗易懂]Maven环境配置及介绍Maven的出现是为了解决jar包管理的问题,可以通过简短的描述信息,进行项目管理的工具软件。1.maven的安装下载地址:http://maven.apache.org/downloa/d.cgi2.环境变量配置maven环境变量配置,配置方式跟jdk有些类似。新建环境变量MAVEN_HOME(值为maven的根目录)、然后在PATH环境变量里加入%MAVEN_HOME%\bin;即可。使用快捷键win+R,在黑窗口输入mvn–v进行查看,显示如下就表

大家好,又见面了,我是你们的朋友全栈君。

Maven环境配置及介绍

Maven的出现是为了解决jar包管理的问题,可以通过简短的描述信息,进行项目管理的工具软件。

1.maven的安装

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VaLZiKiF-1624585976710)(C:\Users\Y\AppData\Roaming\Typora\typora-user-images\image-20210621162744807.png)]

2.环境变量配置

maven环境变量配置,配置方式跟jdk有些类似。新建环境变量MAVEN_HOME(值为maven的根目录)、然后在PATH环境变量里加入%MAVEN_HOME%\bin;即可。
在这里插入图片描述
在这里插入图片描述

使用快捷键win+R,在黑窗口输入mvn –v进行查看,显示如下就表示配置成功了

在这里插入图片描述

3.配置settings.xml文件

有了maven后,就不需要再频繁的下载jar包了,只需要引入一个坐标,就可以找到对应的jar。所有的jar包都放在仓库(repository)中,输入对应的坐标就可以再仓库中找到了。

在安装的目录下找到conf

在这里插入图片描述

xml配置文件中的很多英文注释,如果没有能力区阅读可以忽略,但需要在文件中配置部分路径。

在这里插入图片描述

复制53行到末尾配置自己的仓库地址

<localRepository>D:\repository</localRepository>

由于中央仓库式国外的大佬搞出来的,所以使用外网下载jar包会很慢,所以需要使用到我们国内的大佬们去搭建的私服镜像克隆了中央仓库以供使用,当然xx自由者可直接去中央仓库下载:https://mvnrepository.com/,国内的镜像用阿里的就可以了,当然还有其他的镜像仓库可以去百度,这里是一个阿里云镜像。

<!-- 阿里云镜像 -->
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <!-- https://maven.aliyun.com/repository/public/ -->
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
懒人式CTRL大法:
<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
		  <localRepository>D:\repository</localRepository>
 <!-- 阿里云镜像 -->
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <!-- https://maven.aliyun.com/repository/public/ -->
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

		  </settings>
仓库知识急救区
  1. 本地仓库:就是Maven在本机存储构件的地方。maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建。maven本地仓库的默认位置:在用户的目录下都只有一个.m2/repository/的仓库目录;可以修改。
  2. 中央仓库:包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。开源的Java项目依赖的构件都可以在这里下载到。
  3. 私服:是一种特殊的远程仓库,它是架设在局域网内的仓库。

4.IDEA集成maven

创建一个Maven项目:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

maven项目在默认情况下会产生JAR文件,编译后的classes会放在target/classes下面,JAR文件放在target下面。

创建完maven项目后,系统会提示导入Maven:
在这里插入图片描述

这时可以先不导入,因为系统默认的是IDEA的Maven,也可以用,但是没有配置仓库的位置。所以需要在File–>setting中找到maven,配置好自己的路径。

在这里插入图片描述

5.maven常用命令

常用命令
编译源代码 mvn compile
编译测试代码 mvn test-compile
清除产生的项目 mvn clean
运行测试 mvn test
产生site mvn site
打包 mvn package
在本地Repository中安装jar mvn install
上传项目到远程仓库 mvn deploy
注意:如果出现报错信息,需要在pom.xml中设置jdk1.8。

在这里插入图片描述

设置插件如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
        <source>1.8</source> <!-- 源代码使用jdk1.8支持的特性 -->
        <target>1.8</target> <!-- 使用jvm1.8编译目标代码 -->
               <compilerArgs> <!-- 传递参数 --通过支持反射拿到方法名>
                    <arg>-parameters</arg>
                    <arg>-Xlint:unchecked</arg>
                    <arg>-Xlint:deprecation </arg>
              </compilerArgs>
    </configuration>
</plugin>

6.maven项目生命周期(Lifecycle)

clean: 主要目的是清理项目(第一生命周期)
  • ​ pre-clean: 执行一些清理前需要完成的工作
  • ​ clean: 清理上一次构建生成的文件
  • ​ post-clean: 执行一些清理后需要完成的工作
default:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分

​ validate

​ initialize

​ generate-sources

​ process-sources: 处理项目主资源文件。一般来说,是对src/main/resources目录的内容 进行变量替换等工作后,复制到项目输出的主classpath目录中

​ generate-resources

​ process-resources

compile: 编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中target

​ process-classes

​ generate-test-sources

​ process-test-sources: 处理项目测试资源文件。一般来说,是对src/test/resources目录 的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中

​ generate-test-resources

​ process-test-resources

test-compile: 编译项目的测试代码,一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中

​ process-test-classes

@Test

test: 使用单元测试框架运行测试,测试代码不会打包或部署

​ prepare-package

package: 接受编译好的代码,打包成可发布的格式,如JAR

​ pre-integration-test

​ integration-test

​ post-integration-test

​ verify

install: 将包安装到Maven本地仓库,供本地其他Maven项目使用
deploy: 将最终的包复制到远程仓库(私服),供其他开发人员和Maven项目使用
site生命周期: 建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成站点

​ pre-site: 执行一些在生成项目站点之前需要完成的工作

​ site: 生成项目站点文档

​ post-site: 执行一些在生成项目站点之后需要完成的工作

​ site-deploy: 将生成的项目站点发布到服务器上

7.pom.xml基本配置说明

<!--固定的-->
<modelVersion>4.0.0</modelVersion>
<!--描述当前项目的组织-->
<groupId>cn.cdqf</groupId>
<!--描述当前项目的唯一id-->
<artifactId>maven_01</artifactId>
<version>1.0-SNAPSHOT</version>
<!--定义打包的方式 jar:默认方式 war: web项目最终打成war包 放在服务器上运行 pom:其它项目的父亲 -->
<packaging>war</packaging>
<!--spring jar包有50个 组织+id+版本 定义常量 -->
<properties>
    <junit.version>4.12</junit.version>
</properties>
<!--项目所有依赖都写在这里面 每一个<dependency>就表示一个依赖 groupId+artifactId+version :精确在仓库中定位一个jar -->
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <!--依赖范围-->
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
        <!--排除当前jar依赖的某个jar包 一般在jar包冲突的时候使用-->
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

8.scope依赖范围

scope定义依赖的范围,默认是compile

compile

编译依赖范围,使用此依赖范围对于编译、测试、运行三种classpath都有效,即在编译、测试和运行时都要使用该依赖jar包;

test

测试依赖范围,只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;

provided

已提供依赖范围。编译和测试有效,运行无效。如servlet-api,在项目运行时,tomcat等容器已经提供,无需Maven重复引入;

runtime

运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;

system

系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用

9.jar包的冲突

传递依赖:某个SDK会依赖某些jar包,如果这个SDK是写的比较好的项目,当别人用到该SDK的时候需要导入SDK的jar包,同时也会传递导入SDK中依赖的jar包。

引入条件:

  1. 第一原则:路径优先
  2. 第二原则:第一声明者优先

排除jar包的依赖冲突:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
    <!--排除当前jar依赖的某个jar包 一般在jar包冲突的时候使用-->
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

10.常用插件

插件名称 用途 来源
maven –clean -plugin 清理项目 Apache
maven –compile -plugin 编译项目 Apache
maven –deploy -plugin 部署项目 Apache
maven –install -plugin 安装项目 Apache
maven –resources -plugin 处理资源文件 Apache
maven –site -plugin 生成站点 Apache
maven –surefire -plugin 执行测试 Apache
maven –jar -plugin 构建JAR项目 Apache
maven –war -plugiin 构建war项目 Apache
maven –shade -plugin 构建包含遗憾的JAR包 Apache
maven –changelog -plugin 生产版本控制变更报告 Apache
maven –checkstyle -plugin 生成checkStyle报告 Apache
maven –javadoc –plugin 生成JavaDoc文档 Apache
maven –pmd –plugin 生成PMD报告 Apache
maven –project –info -reports –plugin 生成项目信息报告 Apache
maven –surefire –plugin 生成单元测试报告 Apache
maven -archetype –plugin 基于Archetype生成项目骨架 Apache
maven –assembly –plugin 构建自定义格式的分布包 Apache
maven –dependency –plugin 依赖分析及控制 Apache
maven –enforcer –plugin 定义规则并强制要求遵守 Apache
maven –pgp –plugin 为项目构建生成PGP签名 Apache
maven -invoke –plugin 自动运行Maven项目构建并验证 Apache
maven –release –plugin 自动项目版本发布 Apache
maven –scm –plugin 集成版本控制系统 Apache
maven –source –plugin 生成源码包 Apache
properties –maven –plugin 从properties文件读写Maven属性 Codehaus
sql –maven –plugin 运行SQL脚本 Codehaus
tomcat –maven –plugin 启动、停止、部署项目 Codehaus
versions –maven –plugin 自动化批量更新POM版本 Codehaus
cargo –maven –plugin 启动/停止/配置各类Web容器自动化部署Web项目 Cargo
jetty –maven –plugin 集成jetty容器,实现快速开发测试 Eclipse

11.maven的聚合

聚合的好处:模块重用

  1. 新建一个emptyproject
    在这里插入图片描述

  2. 新建模块

    • 父模块

在这里插入图片描述

   - Util工具模块

在这里插入图片描述

   - Dao模块

在这里插入图片描述

   - service模块

在这里插入图片描述

   - Controller模块

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146578.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月14日 下午9:40
下一篇 2022年5月14日 下午10:00


相关推荐

  • 浅谈 SOLID 原则的具体使用

    浅谈 SOLID 原则的具体使用单一职责原则 SRP 开放封闭原则 OCP 里氏替换原则 LSP 接口隔离原则 ISP 依赖倒置原则 DIP 小结 SOLID 是面向对象设计 5 大重要原则的首字母缩写 当我们设计类和模块时 遵守 SOLID 原则可以让软件更加健壮和稳定 那么 什么是 SOLID 原则呢 本篇文章我将谈谈 SOLID 原则在软件开发中的具体使用 回到顶部单一职责原则 SRP 单一职责原则 SRP 表明一个类有且只有一

    2026年3月18日
    3
  • Pytest(11)allure报告[通俗易懂]

    Pytest(11)allure报告[通俗易懂]前言allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。mac环境:

    2022年7月31日
    9
  • ★Navicat For Mysql 数据库备份与还原

    ★Navicat For Mysql 数据库备份与还原一.首先设置,备份保存路径工具-&gt;选项点开其他-&gt;日志文件保存路径二.开始备份备份分两种,一种是以sql保存,一种是保存为备份1.SQL保存右键点击你要备份的数据库,-&gt;转储SQL文件选择位置和文件名点击保存,开始转储导入建议删除所有表或重新建数据库右键数据库运行SQL文件2.N…

    2022年6月5日
    38
  • beanutils用法_beanutils.populate报错

    beanutils用法_beanutils.populate报错什么是BeanUtils工具BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。 BeanUtils工具一般可以方便javaBean的哪些操作?1)beanUtils 可以便于对javaBean的属性进行赋值。2)beanUtils 可以便于对javaBean的对象进行赋值。3)beanUtils可以将一个MAP集合的数据拷贝到…

    2025年10月30日
    5
  • PetShop4架构与技术分析

    PetShop4架构与技术分析2006-4-1722:20:17(被阅读7246次)1.项目概述与架构分析微软刚推出了基于ASP.NET2.0下的PetShop4,该版本有了一个全新的用户界面。是研究ASP.NET2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间…

    2022年10月17日
    5
  • java转大数据的学习路线

    java转大数据的学习路线首先这个文章是转载的,留着后面基础再扎实一点之后开始学习,感谢原文的作者,写出了如此清晰的学习路线。原文作者文章链接:https://blog.csdn.net/gitchat/article/details/78341484【不要错过文末彩蛋】申明:本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同…

    2022年6月10日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号