Maven简介(四)——仓库

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为我们提供了一个指令可以很轻松的帮我们实现这个功能。

Cmd代码  

  1. 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包到指定的远程仓库。

Cmd代码  

  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>”。如:

Cmd代码  

  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。

时间: 2024-10-02 00:39:56

Maven简介(四)——仓库的相关文章

Maven简介(二)——使用Maven

使用Maven 目录:     3.1     使用maven建立自己的项目    (1)切换到项目所在的目录,如:d:\\develop\\apps    (2)执行如下指令:       mvn archetype:generate 这样就可以根据提示来建立一个maven项目       后面可以接很多参数,常用的有:         -DgroupId=com.company.app 组id         -DartifactId=app 项目名称,maven会根据这个名称在当前目录下新

配置-maven从镜像仓库中下载后存入到私服仓库上

问题描述 maven从镜像仓库中下载后存入到私服仓库上 maven 上我设置一个镜像仓库后, 从镜像仓库中下载的jar, 能不能还能存入到本地的私服上, 能的话是怎样进行配置的 解决方案 我觉得,对于Maven来说,仓库只分为两类:本地仓库和远程仓库.镜像是什么?如果仓库A可以提供仓库B所存储的内容,那么就可以认为A是B的一个镜像,换句话来说,就是任何一个可以从仓库B获得的构件,都能从它的镜像中获得. 镜像的用法是结合私服的,由于私服可以代理任何外部的公共仓库,对于团队Maven用户来说,使用一

maven项目本地仓库有jar包,但是pom.xml却提示依赖关系报错!这是怎么处理

问题描述 maven项目本地仓库有jar包,但是pom.xml却提示依赖关系报错!这是怎么处理 解决方案 贴出具体描述来,这样看不出来

抗忙,,建个MAVEN的私服仓库-NEXUS

公司最近需求越来越上轨道,MAVEN的私服仓库-NEXUS构架起来哟.. 参考文档URL: http://www.linuxidc.com/Linux/2011-07/39578p3.htm http://www.cnblogs.com/dingyingsi/p/3776557.html http://blog.csdn.net/kimylrong/article/details/23280155 http://blog.linguofeng.com/archive/2012/08/10/mav

Maven简介(七)——整合Eclipse

Maven整合Eclipse    Maven整合Eclipse就是在Eclipse中安装Maven的插件,这样我们就可以直接在Eclipse上使用Maven,而不需要去命令窗口敲Maven命令了.有两个Maven插件我们可以用来整合Eclipse,实际应用中安装其中一个就可以了. 8.1     Eclipse m2e    给Eclipse安装m2e插件的好处: 可以在Eclipse中使用Maven Eclipse中build path依赖管理是基于Maven的pom.xml的. 可以从Ec

Maven学习四之利用Nexus来构建企业级Maven仓库

概述 Nexus是Maven仓库管理器,用来搭建一个本地仓库服务器,这样做的好处是便于管理,节省网络资源,速度快,还有一个非常有用的功能就是可以通过项目的SNAPSHOT版本管理,来进行模块间的高效依赖开发.      发现问题 虽然你可以通过中央仓库来获取你所需要的jar包,但是现实往往是存在很多问题: 问题1 网速慢,你可能需要花很长的时间来下载你所需要的jar 问题2 如果你的公司很大,有几百甚至几千人再用Maven,那么这些人都去通过中央仓库来获取jar,那么这是一个很大的资源浪费.如果

Maven简介(五)——pom.xml

 Maven的pom.xml介绍 6.1     简介        pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId和version等Maven项目必须的元素:可以配置Maven项目需要使用的远程仓库:可以定义Maven项目打包的形式:可以定义Maven项目的资源依赖关系等等.对于一个最简单的pom.xml的定义必须包含modelVersion.groupId.artifactId和version这四个元素,当然

Apache Maven简介

Apache Maven一个潜在的基于java的apache ant的构建工具的替代者.两者之间的比较: 第一:ant脚本是可以直接运行在maven中的.maven和ant最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是POM(project object model).这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而ant完全是自己定义,显然maven更胜一筹. 第二:Maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然.而ant则通常是

Maven简介(一)——Maven的安装和settings.xml的配置

1       Maven的安装        安装Maven之前要确保已经安装好了jdk,并且配置好了环境变量JAVA_HOME.具体安装步骤如下: 1.     从apache网上下载maven项目的压缩包.下载地址为:http://maven.apache.org/download.html.比如现在最新的Maven版本是3.0.4,那么我下载好的安装文件就是apache-maven-3.0.4.zip. 2.     将下载后的压缩包解压到Maven的安装目录,比如说是D:\\devel