首页 > 其他分享 >Maven 仓库

Maven 仓库

时间:2022-11-27 15:31:52浏览次数:62  
标签:deploy 仓库 jar Maven 本地 工件


5       Maven仓库介绍

5.1     简介

Maven仓库是用来存储工件的。Maven仓库主要包括本地仓库和远程仓库。当Maven需要一个工件的时候,它会先从本地仓库取,只有在本地仓库不存在对应的工件的时候,才会从远程仓库把对应的工件下载下来保存在本地仓库,并从本地仓库获取所需的工件。默认的本地仓库位置是用户家目录下面的“.m2/repository”,我们可以在Maven安装目录下面的settings.xml文件中通过localRepository定义本地仓库的位置。默认的远程仓库是“​​http://repo.maven.apache.org/maven2/​​”。

在这里我想陈述一个问题,Maven官方是不主张我们在使用Maven的时候还把项目依赖的一些jar包提交到svn等版本控制系统中进行版本控制。这主要有以下原因:

1)      我们已经使用了Maven来管理我们的依赖jar包,那么这些jar包就都会保存在本地仓库中,我们没有必要每个项目都保存一个依赖jar包的拷贝,这会浪费很多的磁盘空间,也违背了Maven设计的初衷。

2)      当我们没有把依赖的jar包提交到版本控制系统的时候,这也就意味着我们这个项目的容量会相对而言小一些,这给我们带来的优点就是在我们检出该项目的时候速度会相对而言更快一些。

3)      Jar包一般都不需要进行版本控制,因为它的变化一般不大,我们很少会去更改一个jar包。

有的时候因为安全或者速度的原因,我们不允许直接从互联网上下载依赖的jar包,这个时候内部的仓库就出来了。我们可以从这个内部仓库下载工件,也可以把工件发布到该仓库。这个内部仓库的概念就相当于是公司内部自己管理了一套工件库,而且可以自由的往这个工件库里面发布公司自己的工件供大家共享。

5.2     安装第三方jar包到本地仓库

有的时候可能我们需要把本地的第三方jar包安装到我们的Maven本地仓库来构建我们的Maven项目。Maven为我们提供了一个指令可以很轻松的帮我们实现这个功能。



mvn install:install-file -Dfile=<filePath> -
DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> -Dpackaging=
<packagingType>


 

参数file表示需要安装的第三方jar包在本地的路径;

参数groupId用于定义该jar包安装后的groupId;

参数artifactId用于定义该jar包安装后的artifactId;

参数version用于定义该jar包安装后的版本;

参数packaging用于定义该jar包安装后的打包类型。

比如现在我想把我电脑上的“D:\develop\lib\mysql-connector-java-5.1.12-bin.jar”安装到我的Maven本地仓库,那么我就可以在命令窗口运行以下指令来达到这个目的:

       mvn install:install-file -Dfile=D:\develop\lib\mysql-connector-5.1.12-bin.jar -DgroupId=mysql -DartifactId=mysql -Dversion=5.1.12 -Dpackaging=jar

之后在其他Maven项目中我们就可以根据定义好的groupId、artifactId、version和packaging类型来添加这里定义好的mysql-connector-5.1.12-bin.jar的引用了。

5.3     部署第三方jar包到远程仓库

前面安装到本地仓库的第三方jar包只能是在本地使用,这样其他人是无法访问到的。如果需要其他人也能访问到的话,我们就需要把它部署到我们的远程仓库上去。我们可以使用以下Maven指令来部署一个第三方jar包到指定的远程仓库。



1. mvn deploy:deploy-file  
2. -Dfile=<filePath>
3. -DgroupId=<groupId>
4. -DartifactId=<artifactId>
5. -Dversion=<version>
6. -Dpackaging=<packagingType>
7. -DrepositoryId=<repositoryId>
8. -Durl=<urlOfTheRepositoryToDeploy>

 

把第三方jar包部署到远程仓库的参数和安装第三方jar包到本地仓库类似,但它多了两个参数,一个是repositoryId和url。repositoryId表示需要部署到的远程仓库的id,这个远程仓库是定义在settings.xml中的;url表示需要部署到的远程仓库的url。

默认情况下,使用deploy:deploy-file部署的第三方jar包将会生成一个通用的pom。如果在部署的过程中不需要生成这个pom,我们可以在使用该指令的时候加上参数“-DgeneratePom=false”。

如果我们在使用deploy:deploy-file部署第三方jar到远程仓库需要使用一个已有的pom的时候,我们需要在使用该指令的时候加上参数“-DpomFile=<pomFilePath>”。如:



1. mvn deploy:deploy-file  
2. -Dfile=<filePath>
3. -DpomFile=<pomFilePath>
4. -DrepositoryId=<repositoryId>
5. -Durl=<urlOfTheRepositoryToDeploy>

 

细心的读者可能已经发现了,我们在使用了参数pomFile的时候没有指定groupId、artifactId、version和packaging参数。这是因为当我们指定了pomFile的时候这些参数都可以从指定的pom文件中获得。

 

当我们需要部署的是一个源码jar包的时候,packaging应该指定为java-source,而且generatePom应该指定为false。

 

标签:deploy,仓库,jar,Maven,本地,工件
From: https://blog.51cto.com/u_13991401/5890088

相关文章

  • Docker Registry和harbor镜像仓库简介、高可用机制、部署自签名的harbor 镜像仓库并实
    harbor简介: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,在DockerRegistry的基础至上添加了一些企业必需的功能特性,例如安全认证、镜像......
  • IDEA配置Maven环境
    1.IDEA配置Maven环境先在IDEA中配置Maven环境:选择IDEA中File-->Settings搜索maven设置IDEA使用本地安装的Maven,并修改配置文件路径2.IDEA创建Ma......
  • Maven基础
    1.MavenMaven是专门用于管理和构建Java项目的工具,它的主要功能有:提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,发布……)提供了一套依赖管......
  • Maven 跳过测试的几种方式
    在Maven对项目进行编译的时候,我们通常可能会希望跳过复杂的测试。尤其是在开始项目还不是非常稳定的阶段。命令行中使用-Dmaven.test.skip=true在命令行,只要简单的给任何......
  • docker仓库
    1.准备环境1.1配置ip地址xserver1:192.168.100.11xserver2:192.168.100.121.2配置yum源1.2.1xserver1配置yum源1.挂载centos1.挂载centos镜像[root@localhost~]......
  • pypiserver搭建私有化仓库
    一、安装过程1、安装库pipinstallpypiserver2、选定安装目录mkdirxxx3、启动pypiserver服务pypi-server-p8080xxx#默认开启方式,需要验密访问:http:/......
  • 如何将本地仓库的代码上传到github远程仓库
    首先将创建的项目克隆到本地,然后在终端中进入该目录初始化gitgitinit将修改添加到缓存区gitadd.将缓存区的文件提交到本地仓库gitcommit-m提交将本地仓库......
  • 搭建docker私有仓库harbor
    一、前提1.Harbor基于docker和docker-compose.首先确认计算机是否已安装Docker-compose下载,参考https://blog.csdn.net/LPClan/article/details/1211300832. 开启内核......
  • 打包 maven 项目时,报 No compiler is provided in this environment. Perhaps you are
    我出错的项目是mybatis-generatorgui(一个逆向生成工具)下载地址:https://github.com/zouzg/mybatis-generator-gui 出错报文:   1.首先使用工具打开该项目(我使用的......
  • IDEA配置Maven(详细版)
    https://blog.csdn.net/qq_42057154/article/details/106114515IDEA配置MavenIDEA创建Maven工程第一节IDEA集成Maven插件第二节使用骨架创建Maven的java工程第三节不使......