Maven 基础

devops 专栏收录该内容
4 篇文章 0 订阅

maven官网

Maven 功能

管理jar,管理依赖,版本。
编译,测试,打包,部署。

Maven 概念

  • POM
    项目对象模型

  • 约定的目录结构

sequenceDiagram
Hello:工程名
|----src:源码
|---|---main:存放主程序
|---|---|---java:存放Java源文件
|---|---|---resources:存放框架或者其他工具的配置文件
|---|---test:存放测试程序
|---|---|---java存放Java源文件
|---|---|---resources存放框架或者其他工具的配置文件
|---pom.xml:Maven工程的核心配置文件
  • 坐标 gav
    modelVersion:4.0
    groupId:com.medbot
    artifactId:videoclassfy
    version:0.0.3-SNAPSHOT
    groupId,artifactId,version 构成一个坐标。标识使用的资源。

  • 依赖管理 scope
    scope 值可选 compile(默认),test,provided

依赖范围编译执行环境有效测试执行环境有效运行时执行环境有效例子
compilespring-core
test××junit
provided×servlet-api
runtime×JDBC驱动
system×本地的,Maven仓库之外的类库
  • 仓库管理
    远程仓库:
    中央仓库:https://repo.maven.apache.org
    mvn中央仓库:https://mvnrepository.com/
    中央仓库镜像网站:阿里,清华 …
    私服:公司内部搭建的服务器
    本地仓库:${user.home}/.m2/repository
    修改本地仓库地址
    setting.xml localReporisoty

  • 生命周期
    清理,编译,测试,报告,打包,安装,部署。
    对应的是命令,真正执行的是插件完成的功能。

  • 插件和目标
    插件:jar 格式的文件

  • 属性
    properties

  • 构建时的属性设置
    build

  • 资源插件
    <build>下加入<resources>

  • 继承 parent

  • 聚合modules

安装Maven

maven官网下载地址
1.上传到linux服务器中的/usr/local/maven,
如果 maven 目录没有,可以自己创建一个。

2.解压 tar -zxvf apache-maven-3.6.3-bin.tar.gz

3./etc/profile 文件追加

#这行是jdk环境变量
JAVA_HOME=/usr/local/java/jdk1.8.0_181
#添加该行
MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
CLASSPATH=$JAVA_HOME/lib
#在这行后面添加:$MAVEN_HOME/bin
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#这样后面添加MAVEN_HOME
export PATH JAVA_HOME CLASSPATH MAVEN_HOME

4.重新加载

source /etc/profile

M2_HOME=MAVEN_HOME

Maven 工具本身的配置文件 setting.xml

 setting.xml 包含仓库镜像,本地镜像,认证信息等。
 Global Maven Settings ---${M2_HOME}/conf/settings.xml
 User Maven Settings --- ${user.home}/.m2/settings.xml

1 首先,setting.xml一般存在与两个地方:maven的安装目录/conf/,和${user.home}/.m2/下。他们的区别是在maven安装目录下的setting.xml是所有用户都可以应用的配置,而user.home下的可想而知就是针对某一用户的配置(推荐是在user.home下)。如果两个都进行了配置,则在应用的时候会将两个配置文件进行中和,而且user.home下的setting.xml优先级大于maven安装目录下的。

原文链接:https://blog.csdn.net/stypace/article/details/38458377

settings.xml 顶层元素

<span style="font-family:Microsoft YaHei;"><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/>
    <interactiveMode/>
    <usePluginRegistry/>
    <offline/>
    <pluginGroups/>
    <servers/>
    <mirrors/>
    <proxies/>
    <profiles/>
    <activeProfiles/>
</settings></span>

下面对各个元素进行解析:

  • localRepository

建构系统本地仓库的路径,不设置的话默认是在{user.home}/.m2/repository/下,如果想要系统所有用户共用一个本地仓库,则可以在maven安装目录下的setting.xml中进行设置

  • interactiveMode

指定Maven是否试图与用户交互来得到输入,默认是true

  • usePluginRegistry

如果设置为true,则在{user.home}/.m2下需要有一个plugin-registry.xml来对plugin的版本进行管理。默认是false

  • offline

如果不想每次编译的时候都去查找远程中心仓库,就需要设置为true,但前提是本地仓库中已有需要的jar包,默认是false

  • pluginGroups

该元素包含一系列的pluginGroup元素,每个pluginGroup又有一个groupId,当一个plugin被使用而在命令行中哦给没有指定groupId的时候,就会查询这个列表

  • Servers

maven除了一般的本地仓库和中央仓库之外,还有一种是远程仓库,一般部署在局域网中供Maven用户使用(成为私服),当maven需要下载构件的时候,它先从私服中请求,如果没有,再到外部的中央仓库中下载,同时下载的构件会在下载到私服中供以后使用,或者用户可以将将构件上传到私服中。

私服还有一个好处就是存放组织内部自己生成的私有构件,这类构件不可能从外部的中央仓库获取,但是组织内部用户又需要共享使用,这个时候就需要私服了。

一般私服建立完毕之后不需要认证就可以访问,但是处于安全方面的考虑,需要提供认证信息才能访问这些私服,这时就需要使用servers元素(需要注意的是配置私服的信息是在pom文件中,但是认证信息则是在setting.xml中,这是因为pom文件往往是被提交到代码仓库中供所有成员访问的,而setting.xml是存放在本地的,这样是安全的)。

而maven是根据pom中的repositories和distributionMnagement元素来决定,然后运行maven clean deploy,这样maven就根据pom中的配置将自己的第三方构件部署在私服上供组织内其他用户使用(注意maven clean deploy和maven clean install的区别:deploy是将该构件部署在私服中,而install是将构件存入自己的本地仓库中)。

  • morriors

显而易见,镜像,也供maven下载jar包

  • proxies

当用户 用代理登录下载时需要配置(但是我现在是在使用代理,可是还是没有作用,原因未知?)

  • profiles(??)

  • activeProfiles(??)

原文链接:https://blog.csdn.net/stypace/article/details/38458377
conf/settings.xml 修改仓库路径

<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值