maven全解

简介: maven全解

@[TOC]

1 初步标签详解

  • project
    <!-- 根标签,代表对当前工程进行配置 -->
    <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">
    
  • modelVersion,从maven2开始就一直是4.0.0
    <modelVersion>4.0.0</modelVersion>
    
  • groupId(代表公司或组织开发的某一个项目)、artifactId(代表项目下的某个模块)、version(当前模块的版本)
    <groupId>com.ruoyi</groupId>
      <artifactId>ruoyi</artifactId>
      <version>3.6.1</version>
    
  • packaging:打包方式
    <!-- 说明是一个java工程 -->
    <packaging>jar</packaging>
    <!-- 说明是一个web工程 -->
    <packaging>war</packaging>
    <!-- 说明这个工程是用来管理其他工程的工程 -->
    <packaging>pom</packaging>
    
  • name(名称)、url(官网地址)、description(项目描述)
    <name>ruoyi</name>
    <url>http://www.ruoyi.vip</url>
    <description>若依微服务系统</description>
    
  • properties(在Maven中定义属性值)
    <ruoyi.version>3.6.1</ruoyi.version>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
    
  • dependencies(配置具体依赖信息)
  • dependency(配置单个依赖信息)
  • scope(当前依赖的范围)

    <dependencies>
    
              <!-- SpringCloud 微服务 -->
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-dependencies</artifactId>
                  <version>${spring-cloud.version}</version>
                  <type>pom</type>
                  <scope>import</scope>
              </dependency>
              </dependencies>
    

    2 依赖范围

  • scope的值:compile、test、provided、system、runtime、import。
    在这里插入图片描述
  • import依赖范围使用要求:打包类型必须是pom、必须放在dependencyManagement中。
    在这里插入图片描述
  • system :这样引入依赖完全不具备有可移植性,所以不要使用。
    在这里插入图片描述
  • runtime:开发阶段不生效,运行阶段生效。
    在这里插入图片描述

3 maven的生命周期

3.1 clean

1、clean生命周期:清理项目,包含三个phase。

1)pre-clean:执行清理前需要完成的工作

2)clean:清理上一次构建生成的文件

3)post-clean:执行清理后需要完成的工作

3.2 site

2、site生命周期:建立和发布项目站点,phase如下

1)pre-site:生成项目站点之前需要完成的工作

2)site:生成项目站点文档

3)post-site:生成项目站点之后需要完成的工作

4)site-deploy:将项目站点发布到服务器

3.3 default

3、default生命周期:构建项目,重要的phase如下。

1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)Package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
在这里插入图片描述
在这里插入图片描述

4 POM的四个层次

4.1超级POM

约定了源文件存放的目录、测试源文件存放的目录、构建输出的目录..等等。maven的默认设置,类似java中的object。

4.2父POM

在这里插入图片描述

4.3有效POM

所有pom配置存放在一起。

5 版本仲裁和排除jar包

  • 最短路径优先
  • 路径相同时声明者优先
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>5.1.9.RELEASE</version>
       <exclusions>
           <exclusion>
               <groupId>org.springframework</groupId>
               <artifactId>spring-core</artifactId>
           </exclusion>
       </exclusions>
    </dependency>
    

    6 导出jar包

    6.1 新建java工程

    新建类和方法,如下:
    在这里插入图片描述

    6.2 打开项目结构中的artifacts,选择空

    在这里插入图片描述

    6.3 命名jar包名称并导出

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    6.4 输出位置

    在这里插入图片描述

    7使用外部jar包

    7.1 新建项目,将项目放到根目录

    在这里插入图片描述

    7.2 将该jar包安装到maven仓库

    使用install插件的install-file目标:
mvn install:install-file -Dfile=[体系外jar包路径^
-DgroupId=[给jar包强行设定坐标^
-DartifactId=[给jar包强行设定坐标^
-Dversion=1^
-Dpackaging=jar

例如:

mvn install:install-file -Dfile=E:\xinglong\yunfeng\myjar.jar ^
-DgroupId=com.xinglong.myjar ^
-DartifactId=maven-outer ^
-Dversion=1 ^
-Dpackaging=jar

7.3 在新工程中引入该jar包依赖

<dependencies>
        <dependency>
            <groupId>com.xinglong.myjar</groupId>
            <artifactId>maven-outer</artifactId>
            <version>1</version>
        </dependency>
    </dependencies>

7.4 使用jar包中的方法

package com.xinglong.testmaven;

import com.xinglong.jar.Myjar;

public class UseMyjar {
   
   

    public static void main(String[] args) {
   
   
        Myjar myjar = new Myjar();
        String name = myjar.getName();
        System.out.println(name);
    }

}

7.5 测试

logic from myjar
进程已结束,退出代码为 0
目录
相关文章
|
6月前
|
存储 缓存 Java
一文搞懂:什么是maven
一文搞懂:什么是maven
43 0
|
Java 测试技术 数据库连接
Maven实战
Maven是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM):POM(Project Object Model):项目对象模型!
Maven实战
|
Java 测试技术 项目管理
关于Maven,我是如何理解并使用的
Maven是一个构建工具,这个构建工具能够帮助你更好的管理包的依赖、还能够为你实现项目的热部署、还能为你运行所有的测试用例、还能够为你项目的打包、发布、还能够实现项目的多模块构建。本文谈...
143 0
|
Oracle Java 关系型数据库
Maven实战与原理分析(二):maven实战
Maven实战与原理分析(二):maven实战
Maven实战与原理分析(二):maven实战
|
算法 IDE Java
Maven实战与原理分析(一):maven超全使用指南总结
Maven实战与原理分析(一):maven超全使用指南总结
|
IDE Java 应用服务中间件
maven(一) maven到底是个啥玩意~
该篇文章篇幅很长,大概的思路如下           maven的介绍,初步认识,获取jar包的三个关键属性 --> 介绍仓库(获取的jar包从何而来)-->用命令行管理maven项目(创建maven项目) --> 用myeclipse创建maven项目 -->详细介绍pom.xml中的依赖关系(坐标获取、定位jar包的各种属性讲解。
189 0
|
Java Maven Android开发
谈谈maven多模块
记得在校的时候,通常用的比较多是动态web工程,动态web工程导入最多就是jar包,这些jar包需要自己手动复制粘贴放入lib目录下,然后build path,有的IDE会自动build path有的需要手动选中所有lib,然后build path。
3554 0
|
Web App开发 Java Apache
maven入门(一)
现在基本上很多项目开始使用maven进行构建项目,已经不是直接在lib文件夹下统一放置jar包,所以还是有必要学习掌握下maven的。 针对maven。这篇文章主要介绍一下几点,大家如果都明白了,就可以参照这个思维导图,再复习下,毕竟知识长时间不用,会忘记的。
1260 0
|
Java 大数据 测试技术
|
Java 测试技术 Apache