美文网首页
maven理解

maven理解

作者: 提笔忘字_波 | 来源:发表于2019-05-05 10:36 被阅读0次

特别细

什么是maven?

maven是一种java构建工具。
1)管理jar资源:自然还能够管理jar与jar之间的引用逻辑和jar资源的使用场景,比如jar是编译时使用还是测试时、运行时使用,可以定义jar的依赖范围,是不是强制性依赖。
2)项目管理:maven可以决定你的项目目录结构,解决哪些文件是源码、哪些是如properties、xml、yml一类的资源文件等等。
3)插件:maven的其他能力全部体现在插件方面,maven提供的插件有几十种,最常见的如编译插件、打包插件、注释插件等等。

管理jar资源

1、maven是如何根据我们的配置找到JAR的(基本原理)

  当我们在pom文件中声明我们项目依赖的jar资源后,maven默认会首先查找我们计算机本地的repository(可以自定义其他名字)文件夹,repository内部存放jar资源的目录结构非常简单,是与我们声明的groupId和artifactId有关,举例说明:
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <!-- <scope>provided</scope> -->
                <type>引入的文件类型是pom</type>
                <scope>生效作用域import导入阶段</scope>
    </dependency>

groupId事实上就是存储在资源库repository文件夹内的包路径,
artifactId是资源库repository文件夹内这个jar文件各个版本共同存储的所在文件夹名字。Version对应资源库repository文件夹内这个jar最终存储在的文件夹的文件夹名字。

备注:最终我们引用的jar包就会在我们找到的这个文件夹内,除了jar包以外,还会包含一个> 同名的POM文件,这个POM文件是为了让我们的项目引用这个jar资源时,去查找这个jar包
的jar包依赖。

2、本地仓库没有jar包怎么办?

那么如果我们的资源库repository文件夹内并不包含我们所声明的jar包,这种情况下maven会根据我们pom文件中声明的资源库,按从上至下的顺序一个一个的到第三方资源库去查找。

<repositories>
   <repository>
     <id>远程仓库唯一标识符</id>
     <layout>用于描述资源库的布局类型的</layout>
     <url>远程仓库的url</url>
     <snapshots>
              是否能够引用快照版本。maven资源库分为快照版本和正式版本,快照版只还正在维    护的版本,可能存在问题的,正式版本则是完整的正式发布的版本。False时这个资源库里的快照版本jar我们将无法使用,正式版本同理。
      </snapshots>
      <releases>是否能够引用正式版本</releases>
  </repository>
</repositories>

3、什么是jar冲突?

Jar冲突是指A引用C,B也引用C,但是他们引用的C版本不相同
1)出现JAR版本冲突了怎么办?

   <dependency>
    <groupId>sample.ProjectA</groupId>
    <artifactId>Project-A</artifactId>
    <version>1.0</version>
    <scope>compile</scope>
    <exclusions>
      <exclusion>
        <groupId>sample.ProjectB</groupId>
        <artifactId>Project-B</artifactId>
      </exclusion>
    </exclusions>
  </dependency>

项目管理

1、自定义资源位置。

<build>
    .......
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
    </resources>
    ......
</build>

Directory:相对于项目根目录的相对路径
Includes:包含哪些文件,可是使用通配符
Excludes:排除哪些文件,可使用通配符
targetPath:编译时编译到哪些目录下

2、maven项目的父子关系

 pom文件与pom文件之间是可以定义上下级关系的,它自然也决定着我们多项目时的项目之间的关系。

1)父pom文件

20180719142407739.png
2018071914241645.png

我们发现父级pom文件与普通pom文件没有太多区别,仅仅多了一个modules模块,这里生命的model就是子pom文件的artifactId属性。

2)子pom文件

20180719142422278.png

我们也能够发现子pom文件相比正常的pom文件多了parent配置,parent中的配置就是对应的父级pom文件。这样maven项目的父子关系就建立了。

https://blog.csdn.net/mydeathtrial/article/details/81114634

相关文章

  • maven理解

    特别细 什么是maven? maven是一种java构建工具。1)管理jar资源:自然还能够管理jar与jar之间...

  • Maven学习笔记(一)

    对Maven的理解 先来看下Maven官网的定义: IntroductionMaven, a Yiddish wo...

  • CentOS7 安装Maven3.6.1详解

    1、什么是Maven Apache Maven是一个软件项目管理和理解工具。Maven基于项目对象模型(POM)的...

  • Maven的理解

    Maven,用于团队式开发的工具,需要在开发工具中载入,以下谈谈自己的见解。Maven主要有两个作用,一个是项目构...

  • maven仓库理解

    前言 使用maven也有一段时间,经常发现有些jar包拉取不到,所以整理出比较详细的maven仓库优先级,更加深层...

  • 彻底理解maven

    前言 最近解决jar包冲突问题时,很头疼,发现自己对maven的理解太肤浅了,很多细节都一知半解,于是最近又学习了...

  • 全面理解 Maven

    1 简介 本文将介绍基于 Apache Maven 3 的项目构建的基本概念和方法。Maven 是一套标准的项目构...

  • 将Library制成jar/aar,上传至maven

    理解Maven Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可...

  • RocketMQ Hello

    《RocketMQ实战与原理解析》 Maven依赖 发送消息 接收消息

  • Maven-一篇理解Maven

    1 Maven 介绍 Maven 翻译为"专家"、"内行"它是 Apache 下的一个纯 Java 开发的开源项目...

网友评论

      本文标题:maven理解

      本文链接:https://www.haomeiwen.com/subject/dcfcoqtx.html