当前位置: 首页 > news >正文

基于nexus的maven私服配置

为什么80%的码农都做不了架构师?>>>   hot3.png

在maven项目的开发中,因为maven官方库资源下载慢的原因,一般我们都会选择搭建一个私服,一般都会选择nexus作为私服,但是nexus安装完以后,只是完成了私服的第一步,还需要第二步,即配置私服,在实际项目中使用,这儿主要讲解第二部。

这部分主要分了两个部分,第一部分为下载库,第二部分为上传库,即当有一些包我们不能冲maven库中下载的时候,就需要我们将这些包上传到私服供他人使用。

1、配置下载库

配置下载库有两种方式:

第一种是直接在pom文件中配置,直接使用,具体代码如下:

<repositories>
	<!-- 远程仓库的连接信息,依赖扩展的jar包库 -->
    <repository>
		<!--  远程仓库唯一标识  -->
        <id>central</id>    
		<!--  远程仓库地址  -->
        <url>http://192.168.10.112:9037/nexus/content/repositories/central/</url>  
		<!--  允许发布版本下载  -->
        <releases>            
            <enabled>true</enabled>        
        <releases>
		<!--  允许快照版本下载  -->        
        <snapshots>
          <enabled>true</enabled>        
        <snapshots>   
    </repository>
</repositories>
  <!--  插件库地址  -->
<pluginRepositories>
    <pluginRepository>
		<id>central</id>
		<url>http://192.168.10.112:9037/nexus/content/repositories/central/</url>
		<releases>
			<enabled>true</enabled>
		<releases>
		<snapshots>
			<enabled>true</enabled> 
		</snapshots>
    </pluginRepository>
</pluginRepositories>

直接在pom中配置有一个缺点,该配置值针对当前项目有效,如果新开一个项目,还需要重新配置,因此衍生出第二种方式。

第二种是在maven配置文件setting.xml中进行配置,具体代码如下:

<profiles>
	<profile>
		<id>nexus</id>
		<!--  仓库  -->
		<repositories>
			<repository>
				<id>central</id>
				<name>Nexus</name>
				<url>http://192.168.10.112:9037/nexus/content/repositories/central/</url>
				<!--发布版本配置-->
				<releases>
					<!-- 允许搜索发布版本 -->
					<enabled>true</enabled>
					<!-- 指定更新频率:never-从不,always-一直,daily-每天,interval:X-分钟数 -->
					<updatePolicy>never</updatePolicy>
					<!-- 校验不通过的情况下执行的操作:fail-失败,ignore-不管,warn-警告 -->
                    <checksumPolicy>fail</checksumPolicy>
				</releases>
				<!-- 快照版本配置 -->
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>never</updatePolicy>
                    <checksumPolicy>fail</checksumPolicy>
				</snapshots>
			</repository>
		</repositories>
		<!--  插件仓库  -->
		<pluginRepositories>
			<pluginRepository>
				<id>central</id>
				<name>Nexus</name>
				<url>http://192.168.10.112:9037/nexus/content/repositories/central/</url>
				<releases>
					<enabled>true</enabled>
					<updatePolicy>never</updatePolicy>
                    <checksumPolicy>fail</checksumPolicy>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>never</updatePolicy>
                    <checksumPolicy>fail</checksumPolicy>
				</snapshots>
			</pluginRepository>
		</pluginRepositories>
	</profile>
</profiles>

有了上面的配置以后,在项目的pom中也不会直接调用,还需要我们在setting配置文件中激活对应的profile,代码如下:

< activeProfiles>
     < activeProfile>nexus</activeProfile >
< /activeProfiles>

这样,即使我们不在pom中做任何配置,项目默认也会到setting这个配置的仓库里面去搜索包,注意:如果pom中也有一个仓库配置,但是pom中的配置的id和profile中的id重复,setting配置文件中的配置会覆盖pom中的配置。

上面的配置完成以后,我们可能还会发现一个奇怪的现象,就是maven既在从nexus下载,也在从maven中央库下载。这是因为在超级pom中还有一个定义id为central的仓库,如果这个仓库的id没有被我们覆盖,那maven就可以从中央库下载包,所以在此我们有两种解决办法,第一种就是我们自己写的配置的id为central,这样我们就可以覆盖超级pom里面的仓库配置了;还有一种解决办法就是在setting配置文件中配置一个镜像,然后在镜像中包含我们所需要的仓库,这样所有的搜索仓库的请求都会通过镜像搜索,这样其实上面所配置的url就已经失效了,但是关于快照版本和发布版本的更新还是有作用的,具体代码如下:

<mirrors>
	<mirror>
		<id>nexus</id>
		<name>internal nexus repository</name>
		这个url是nexus中的一个group,包含了central,和我们自己需要的仓库的一个组
		<url>http://192.168.10.112:9037/nexus/content/groups/public/</url>
		<!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central -->
		<mirrorOf>*</mirrorOf>
	</mirror>
</mirrors>

2、配置部署(上传)库:

部署库主要针对多人开发时,有一部分包在远程仓库中找不到,但是我们的项目开发又需要,这是我们就可以把这部分包上传到我们的私服的仓库,然后供其他人使用。配置部署库也有两种方法:

第一种方法是使用maven部署到私服上的仓库,首先需要在pom里面进行配置,具体代码如下:

	<!-- 配置部署的远程仓库 -->  
	<distributionManagement>  
		<!-- 指定发布版本发布jar的库 -->
		<repository>
			<id>releases</id>
			<name>Nexus Release Repository</name>		
			<url>http://192.168.10.112:9037/nexus/content/repositories/releases/</url>
		</repository>
		<!-- 指定快照版本发布jar的库 -->
        <snapshotRepository>  
            <id>snapshots</id>  
            <name>nexus distribution snapshot repository</name>  
            <url>http://192.168.10.112:9037/nexus/content/repositories/snapshots/</url>  
        </snapshotRepository>  
    </distributionManagement>  

然后在setting.xml配置文件做如下配置:

<servers>
	<server>
		<!-- 注意:这个id要和pom配置文件中的id相对应 -->
		<id>snapshots</id>
		<!-- 服务器认证时需要的用户名和密码 -->
		<username>deployment</username>
		<password>password</password>
	</server>
	<server>
		<id>releases</id>
		<username>deployment</username>
		<password>password</password>
	</server>
</servers>

第二种方法:在nexus界面手动部署,具体操作如下

154842_k6JQ_2473866.png

155123_7Ql9_2473866.png

1、进入nexus操作界面,点击repositories,这儿以操作第三方库的形式展示

2、选择3rd party

3、点击artifict upload,进入编辑界面

4、GAV有两种形式:GAV Parameters——用户上传单独的包,From POM——用于上传有依赖包的情况,我们这儿选择的是GAV Parameters

5、auto guess打勾,然后输入包的groupid,artifictid,version,包类型选择jar

6、点击select artifict(s) to upload按钮,选择自己要上传的jar

7、点击add artifict

8、点击upload artifict

然后等待上传成功,最后我们就可以在browse index 下看到我们上传的jar,也可以在右侧看到对应的包信息,使用右侧的信息就可以把包下载到我们的项目中,上传需要依赖包的包的时候,所需要的所有信息都在pom中进行配置,所以只需要上传jar和pom就行了。

155215_g3D8_2473866.png

 

转载于:https://my.oschina.net/jiaoy/blog/734669

相关文章:

  • 设计模式之Adapter模式
  • 关于KMP算法理解(快速字符串匹配)
  • uva 10370 Above Average
  • linux下部署tomcat指定JDK版本编译并运行javaWEB应用
  • 个人视频发布汇总——教育改变人生
  • springmvc项目提交post表单参数乱码解决办法
  • MongoDB常用操作命令大全
  • I.MX6 android 4.2 源码下载
  • wait和waitpid详解
  • 使用WSAIoctl获取AcceptEx函数指针 [转]
  • esxi报错There is no more space for virtual disk--逻辑卷缩减!
  • Delphi 7使用自定义图标关联文件类型
  • NServiceBus---最流行的开源企业服务总线 for .Net
  • Struts2 - 常用的constant总结
  • EF-CodeFirst 继承关系TPH、TPT、TPC
  • [deviceone开发]-do_Webview的基本示例
  • [NodeJS] 关于Buffer
  • Android Studio:GIT提交项目到远程仓库
  • Consul Config 使用Git做版本控制的实现
  • ES2017异步函数现已正式可用
  • Hibernate最全面试题
  • JavaScript设计模式与开发实践系列之策略模式
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Laravel 菜鸟晋级之路
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 从零开始学习部署
  • 工作中总结前端开发流程--vue项目
  • 猴子数据域名防封接口降低小说被封的风险
  • 回流、重绘及其优化
  • 将 Measurements 和 Units 应用到物理学
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 区块链分支循环
  • 小而合理的前端理论:rscss和rsjs
  • 正则学习笔记
  • ​一些不规范的GTID使用场景
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • ()、[]、{}、(())、[[]]命令替换
  • (c语言)strcpy函数用法
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)jdk与jre的区别
  • **python多态
  • .Net - 类的介绍
  • .NET CLR Hosting 简介
  • .NET Framework .NET Core与 .NET 的区别
  • .NET gRPC 和RESTful简单对比
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET Project Open Day(2011.11.13)
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开源快速、强大、免费的电子表格组件
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually