maven-仓库

(43) 2023-10-25 19:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说maven-仓库,希望能够帮助你!!!。

1、maven仓库

  • 在Maven的世界里,任何一个依赖、插件、项目构建的输出,都可以成为一个构件。如 log4j-1.2.15.jar依赖是一个构件,maven-compile-pligin-2.0.2.jar插件是一个构件,myapp项目构建完后输出myapp-1.0-SNAPSHOT.war也是一个构件。Maven在某个位置存储所有maven项目共享的构件,这个位置就称为仓库。每一个构件在仓库中都有一个唯一的坐标。
  • maven是基于简单文件系统存储的,根据依赖生成的路径可以在maven仓库的文件系统找到对应的文件--maven的布局

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

 <dependency>
 <groupId>org.testing</groupId>
 <artifactId>testng</artifactId>
 <version>5.6</version>
 <classifier>jdk15</classifier> 注:该项不会出现在依赖申明中,便于举例写于此处
 <packaging>jar</packaging>
 </dependency>

查找构件的步骤:

a、基于groupId准备路径,将.转换为/,并在最后添加路径分隔符 -->org/testing

b、基于artifactId准备路径,在前面基础添加artifactId和路径分隔符 -->org/testing/tesng/

c、使用版本信息,在前面基础上添加version和路径分隔符 -->org/testing/tesng/5.6/

d、依次加上artifactId,构建分隔符连字号,以及version -->org/testing/tesng/5.6/tesng-5.6

e、如果有classifier,则添加classifier和 路径分隔符 -->org/testing/tesng/5.6/tesng-5.6-jdk15

f、添加扩展名 -->org/testing/tesng/5.6/tesng-5.6-jdk15.jar

2、仓库的分类

maven-仓库_https://bianchenghao6.com/blog__第1张

对Maven来说,仓库分为本地仓库和远程仓库。当Maven根据坐标寻找构件的时候,现在本地仓库查找,找到直接使用,否则去远程仓库查找,找到了下载到本地仓库再使用。如果在本地仓库和远程仓库都没有找到,maven会报错。

  • 本地仓库:setting.xml指定本地仓库的路径
  • 远程仓库-中央仓库:maven的默认远程仓库

maven有默认的远程仓库的配置,详见D:\apache-maven-3.5.0\lib\maven-model-builder-3.5.0\org\apache\maven\mode\pom-4.0.0.xml

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

 <repositories>
 <repository>
 <id>central</id> 中央仓库的唯一标志
 <name>Central Repository</name>  可读性名称
 <url>https://repo.maven.apache.org/maven2</url> 中央仓库的地址
 <layout>default</layout>  默认布局,1中所示
 <snapshots>  快照配置
 <enabled>false</enabled>  失能,表示不从中央仓库下载快照版本的构件
 </snapshots>
 </repository>
 </repositories>
  • 远程仓库-私服:架设在局域网内的仓库,代理广域网上的远程仓库,供局域网内的maven用户使用
maven-仓库_https://bianchenghao6.com/blog__第2张

私服优势:

a、节省外网带宽:减少了大量对远程仓库的重复请求

b、加速maven构建:maven内部机制(如快照更新检查)要求maven执行构建的时候不停地检查远程仓库数据,当配置了很多远程仓库时,构建速度会被大大降低。使用私服maven仅需要检查局域网内私服的数据。

c、部署第三方构件:构件无法从任何远程仓库获取,比如公司内部生成的私有构件,orcale的JDBC由于版权因素无法发布到公共仓库,建立私服后可以将这些构件发布到私服供大家使用

...

3、远程仓库的配置

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

 <repositories>
 <repository>
 <id>jboss</id>
 <name>JBoss Repository</name>
 <url>http://repository.jboss.com/maven2</url>
 <layout>default</layout>
 <releases>
 <enabled>true</enabled>
 <updatePolicy>always</updatePolicy> 更新策略,never-从不检查更新lalways-每次构建都检查更新;interval:X-每隔X分钟检查一次更新
 </releases>
 <snapshots>
 <enabled>false</enabled>
 </snapshots>
 </repository>
 </repositories> 
  • 远程仓库的认证:

大部分远程仓库不需要认证,部分出于安全考虑,需要认证

<server>
 <id>my-proj</id>
 <username>user</username>
 <password>passwd</password>
</server>

认证信息必须配置在setting.xml文件中;id元素的值必须与配置的仓库的id一致

  • 部署到远程仓库:

发布到远程仓库往往需要认证,配置通上。以下配置了稳定版本发布的仓库和快照版本发布的仓库:

 <distributionManagement>
 <repository>
 <id>proj-releases</id>
 <name>Tesla Releases</name>
 <url>http://192.168.1.1/content/repositories/proj-releases</url>
 </repository>
 <snapshotRepository>
 <id>proj-snapshots</id>
 <name>Tesla Snapshots</name>
 <url>http://192.168.1.1/content/repositories/proj-snapshots</url>
 </snapshotRepository>
</distributionManagement>

4、镜像

如果仓库A可以提供仓库B的所有内容,那么可以认为A是B的一个镜像。比如:http://maven.net.cn/contents/groups/public是中央仓库http://repol.maven.org/maven2在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务。因此,可以配置maven使用该镜像来替代中央仓库

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

<mirror>
 <id>maven.net.cn</id>
 <name>Team Nexus Release Mirror</name>
 <mirrorOf>central</mirrorOf> 表示该配置为central中央仓库的镜像,任何对中央仓库的请求都会转至该镜像
 <url>http://maven.net.cn/contents/groups/public</url>
</mirror>

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复