Java教程

maven笔记小抄

本文主要是介绍maven笔记小抄,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
settings.xml
settings.xml位置
  1. 标签指定本地下载的依赖在本地的保存位置

${user.home}/.m2/repository表示C:\Users\username.m2\settings.xml

  1. idea中File | Settings | Build, Execution, Deployment | Build Tools | Maven的local repository可以覆盖

settings.xml内容

<?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">

   <pluginGroups></pluginGroups>

   <proxies></proxies>

   <localRepository>.m2/repository</localRepository>

   <mirrors>
      <mirror>
         <id>settings-mirror</id>
         <url>https://maven.aliyun.com/repository/public</url>
         <mirrorOf>central</mirrorOf>
      </mirror>
   </mirrors>

 <profiles>
        <profile>
            <id>xxx-product</id>
            <repositories>
                <repository>
                    <id>xxx-xxx-repo</id>
                    <url>url</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
            <repositories>
        </profile>
</settings>
依赖下载基本优先级
  1. 本地所有Maven项目都复用一个本地仓库
  2. 中央仓库从远程仓库/私服(可配置)下载必要的构建

本地仓库 > 特定仓库reporitory的镜像mirror > settings中配置的仓库repository
详细优先级: local-repo > settings-profile-repository > pom-profile-repository > pom-repository > central
本地仓库 > 私服 (profile)> 远程仓库(repository)和 镜像 (mirror) > 中央仓库 (central)

Maven核心概念
仓库地址和坐标之间的关系
groupId com.huawei.xxxcommon.xxx
artifactid xxx-service 
version 1.0
packaging jar(bundle war...)
classifier 附加构建信息

groupid artifactid version是必须定义的
仓库地址: base + com/huawei/xxcommon/dmq/xxx-service/1.0/xxx.jar
Maven依赖优选原则
  1. 依赖最短路径优先原则
    A-B-C-X{1.0} A-D-X{2.0} 选择X{2.0}
  2. pom文件中声明顺序优先 先声明的依赖
  3. 覆写优先
    子pom内声明的优先于父pom的依赖
maven生命周期
  1. 三套生命周期相互独立
    clean(pre-clean clean post-clean) > default(validate compile test package verify install deploy) > site
  2. 一套生命周期中,生命周期阶段前后依赖
  3. mvn命令指向生命周期阶段
maven插件
  • Maven本身是一个框架,实际的任务都由插件完成
  • 插件与生命周期阶段绑定,用户通过指定生命周期阶段就能够隐式的通过插件执行任务
  • 打包类型(packaging)控制default生命周期与插件目标(plugin goal)的绑定
常见label的含义
  • mirrorOf

为某个仓库repository做镜像, 填写的是repository id, * 匹配所有的仓库
相当于一个拦截器,它会拦截maven对remote repository的相关请求,
把请求里的remote repository地址,重定向到mirror里配置的地址

mirrorOf=“*”  //刚才经过,mirror一切,你配置的repository不起作用了

mirrorOf=my-repo-id //镜像my-repo-id,你配置的my-repo-id仓库不起作用了

mirrorOf=*,!my-repo-id  //!表示非运算,排除你配置的my-repo-id仓库,其他仓库都被镜像了
就是请求下载my-repo-id的仓库的jar不使用mirror的url下载,其他都是用mirror配置的url下载

mirrorOf=external:*  //如果本地库存在就用本地库的,如果本地没有所有下载就用mirror配置的url下载
  • packaging

项目的发布形式jar war rar pom maven-plugin ear ejb par

multi-moduls

maven3支持maven项目的多模块结构(聚合项目), 通常由一个父模块和若干个子模块构成
父模块必须以pom打包类型,同时以给出所有的子模块

  • relativePath

是maven为了寻找父模块pom.xml所额外增加的一个寻找路径

<parent>
    <groupId>com.company.department.group</groupId>
    <artifactId>reponame</artifactId>
    <version>xxx-SNAPSHOT</version>
    <relativePath>../../../pom.xml</relativePath>
</parent>
这篇关于maven笔记小抄的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!