maven高级使用教程

简介: maven高级使用教程

一、简介

1、maven是Apache软件基金会的一款依赖管理和快速构建的软件。

安装与下载:

从官网下载压缩包,直接解压缩就可以。


目录结构:

conf 配置文件目录

lib jar包目录

bin 二进制文件目录

boot 启动目录


2、仓库:

本地仓库:在本机的资源仓库

远程仓库:不在本机的仓库。包括私服仓库、中央仓库。

私服仓库:公司搭建的资源仓库。

中央仓库:maven团队维护的仓库。


3、坐标:

定位jar包的方式

由GAV构成:

<group>:组织id
<artifactid>:项目id
<version>:版本

4、修改settings.conf设置阿里云镜像

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

5、maven项目构建命令

mvn  compile  编译
mvn  clean   清理
mvn  packaging   打包
mvn  test   测试
mvn  install  安装到本地仓库

6、idea结合maven

idea设置中配置maven的安装路径、settings.conf和本地仓库的位置

7、pom.xml基本结构


<!--xml文件版本-->
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <!--指定pom模型的版本-->
    <modelVersion>4.0.0</modelVersion>
    <!--打包方式:java项目打包为jar,web项目打包为war-->
    <pacagking>jar</pacagking>
    <!--父工程依赖坐标--> 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
    <!--本工程坐标-->
    <groupId>com.yyb</groupId>
    <artifactId>redis-springboot</artifactId>
    <!--RELEASE为正式版本,SNAPSHOT为开发版本-->
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <!--依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <!--插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

二、依赖

1、依赖传递:

项目的依赖也有依赖。依赖会进行传递。我依赖的依赖也是我的依赖。在项目中直接引入的依赖是直接依赖,依赖的依赖是间接依赖。

2、依赖传递冲突:

路径优先:当依赖中 出现相同的资源时,层级越深优先级越低,层级越少优先级越高。

声明优先:当同级中出现相同的资源,配置顺序靠前的覆盖配置顺序靠后的。

26.png


3、可选依赖:隐藏所依赖的资源。实际上引用了,但是别的项目看不到。

<optional>true</optional>


4、排除依赖:断掉依赖传递。

<exceptions>
    <exception>
        <groupId>...</groupId>
        <artifactId>...</artifactId>
    <exception>
</exceptions>

5、依赖范围:

<scope>...</scope>
• 1

compile(默认)、test、provided、runtime

compile(默认) test provided runtime
主代码
测试代码
打包

三、生命周期与插件

(1) clean 清理工作

(2) compile test package install

(3) site 产生报告,发布站点


四、聚合与继承

1、聚合:

在一个模块中管理其他模块。

聚合模块通常是空模块,没有src文件夹,只有pom.xml文件,打包方式为pom。

<packaging>pom</packaging>
<modules>
    <module>...</module>
    <module>...</module>
    <module>...</module>    
</modules>

打包方式有: jar(java项目)、war(web项目)、pom(聚合项目)

普通模块默认为jar,聚合模块为pom


2、继承:

子工程继承父工程,父工程管理子工程


在父工程的pom.xml中对依赖进行统一管理,在dependencesManager中声明依赖,而不是引入依赖。

<dependencesManager>
    <dependences>
        <dependence>
            <groupId>...</groupId>
            <arifactid>...</arifactid>
            <version>...</version>
        </dependence>
        <dependence>
            <groupId>...</groupId>
            <arifactid>...</arifactid>
            <version>...</version>
        </dependence>        
    </dependences>
<dependencesManager>

在子工程的pom.xml中,实质地引入依赖,可以不写依赖的版本号,使用父工程pom.xml中指定的版本号,如果在子工程中指定版本号,则使用子工程的版本号。

<parent>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>...</artifactId>
 <dependences>
     <dependence>
         <groupId>...</groupId>
         <arifactid>...</arifactid>
     </dependence>
     <dependence>
         <groupId>...</groupId>
         <arifactid>...</arifactid>
     </dependence>        
</dependences>

3、聚合和继承的区别:

聚合是用于 快速构建,继承是用于快速配置 ,聚合和继承可以不在一个模块里,但通常放在一个模块里。


五、属性:

属性可以理解为变量,在子工程中进行使用

在父工程中对版本进行统一管理。

  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.complier.target>1.8</maven.complier.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.18.16</lombok.version>
        <mysql.version>5.1.47</mysql.version>
        <druid.version>1.1.16</druid.version>
       <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
 </properties>

在子工程中引用

<version>${junit.version}</version>


六、版本管理:

release 正式发布版

snapshot 快照版本


版本号约定:

<主版本>.<次版本>.<增量版本>.<里程碑版本>


主版本:项目架构有重大变化

次版本:有较大的功能新增或变化,或全面系统的修复漏洞

增量版本:修复重大漏洞

里程碑版本:测试功能,与下一个正式版本相比,不是很稳定,有待更多地测试。


例:2.2.1.RELEASE


七、私服

私服是一种远程仓库,通常由公司在局域网搭建,使用nexus等工具。

这里展示使用docker运行nexus私服。

docker pull sonatype/nexus3
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
http://ipAdress:8081


相关文章
|
6月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
137 1
|
3月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
6月前
|
Java 应用服务中间件 Maven
idea配置本地maven保姆级教程
idea配置本地maven保姆级教程
941 0
|
5月前
|
Java Linux Maven
Maven下载与安装详细教程
Maven下载与安装详细教程
142 0
|
3月前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
98 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
6月前
|
Java Maven Spring
【操作宝典】IntelliJ IDEA新建maven项目详细教程
【操作宝典】IntelliJ IDEA新建maven项目详细教程
291 1
|
6月前
|
存储 Java Apache
【maven】maven下载、安装与配置详细教程
【maven】maven下载、安装与配置详细教程
343 1
|
4月前
|
XML Java 测试技术
maven教程(4)
maven教程(4)
34 1
|
5月前
|
Java Apache Scala
Maven 教程
Maven,源自Apache,是一个Java项目管理工具,负责构建、依赖管理和文档生成。它支持多种语言项目,基于POM理念,遵循约定优于配置原则,建议统一的目录结构。主要功能包括构建、文档、报告、依赖管理、 SCM、发布及分发。标准目录如:`src/main/java`放源码,`src/test/java`放测试代码,`target`目录用于输出编译结果,`.m2/repository`为默认本地仓库。
|
5月前
|
Java Apache Scala
Maven 教程
Maven是Apache的开源项目管理工具,基于POM进行Java项目的构建、依赖管理和文档生成。它支持多种语言项目,提供约定优于配置的目录结构,如src/main/java存放源码,src/test/java存放测试代码,目标输出目录在target,而~/.m2/repository是默认本地仓库。

推荐镜像

更多