Hello,各位小伙伴大家好,我是老郑头。好久不见,最近因为工作的缘故,导致了更新变慢,但是老郑头也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间。

所以还请大家多多见谅,下一期的分享主题我们依旧会围绕着go语言系列进行。不过老郑头会尽量加快节奏。因为接下来的挑战是对于最近关乎国家战略有关的区块链。

因为之前有幸参加了相关的一部分项目实战,所以也想对于这一部分做一个简单的教程系列。还请大家敬请期待哦。

闲话不多说,我们今天分享的主题就是最近在项目开发上遇到的一个简单问题总结,就是关于maven私服的上传jar包。因为大家都知道关于java的项目开发经历了换代,老郑头最开始做开发的时候,使用的是最原始的jar包导入。

就是你需要在网上将你项目中所要的jar进行下载,然后放在项目的lib目录下,最后使用eclipse进行build。

这样的坏处就是由于项目过大,或是项目所使用的jar包太多,导致了管理混乱,严重的时候,甚至会影响项目的开发。因为会导致jar冲突,或是项目版本和jar包不符。后面我们就开始使用了maven对项目jar包进行管理。

Maven的介绍

百度百科上对于maven的描述是:maven是可以通过一小段描述信息来管理项目的构建、报告和文档的项目管理工具软件。

它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。

遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

Maven的好处

使用maven的好处当然是有很多的,第一个可以更加方便的管理项目的依赖。

所有的jar包管理上图所示,一目了然,而且版本和注释都可以写清楚,让开发者更加直观、明了的了解到项目所用到的jar包和版本。

其次就是使用maven后可以结合jenkins可以实现一键部署,省去了中间烦恼,想比与之前的本地打包,然后上传服务器,接着备份和停服务,最后重启的繁琐步骤,maven的使用可以算的上真正的为我们开发者节约了不少的时间,提升我们的开发效率。

最后就是在大型项目的开发过程中,特别是现在很火的微服务构建中,利用maven可以最大程度的帮助我们进行模块的划分和复用。有过手动导包开发的小伙伴们更加能够体会到这其中的变化巨大吧。

Maven的安装

Maven的安装可以算的上是非常简单的了,简单来讲的话可以分为三步走 。

第一步进行下载maven,大家可以通过官网进行下载最新的maven包。

最新的记录是3.6.2,在需要jdk 环境的说明中有写到,需要1.7以上的版本,而且官网也提供了编译好的包和源码包供大家下载使用。

第二步就是配置环境变量

其实maven的环境变量非常简单,首先我们看到下载好的maven项目内部是这个样子的。

然后建立一个maven_home

最后在我们的path里添加相应的bin文件路径位置即可。

第三步就是验证 ,使用命令mvn -v 即可

最后提醒大家一点的就是maven的默认仓库是在C盘,如果需要改变的话,只需要修改settings文件的位置即可。

Maven上传到私服

Maven的仓库主要分为三种,第一种就是本地仓库,

第二种就是公司私服,

第三种就是远程仓库。一般来讲,如果是自己开发,我们只需要使用远程镜像,就可以将远程仓库中的jar包下载到自己的本地仓库。

然后进行使用,但是我们公司有专门的私服。所以我们有时候就需要将某一部分共用代码打成jar放到私服,以便于大家使用。所以老郑头在这里使用三种方式来给大家进行分享。

第一种方式当然是我们最简单的可视化界面 。这个时候我们只需要问一下运维或是管理服务器的人员,给我们私服的一个账号密码和地址即可。

如图所示,我们只需要将我们打好的jar包上传,添加延展性、groupID 、artifactID、版本号然后上传即可。

第二种-通过命令上传

通过使用maven的deploy命令将本地jar上传到指定的私服中,步骤如下:

使用命令mvn deploy部署jar包:

其实网络中有太多的人描述如何上传jar包到私服,但是老郑头试过了,结果显而易见的不得行,当然也不是全部都不行,只是绝大部分不可以。本着负责任的态度。所以老郑头挑选了一个正反例子给大家进行示范,当然有可能只是我不行,也可能是哪一步做错了导致不行。

mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=E:\jar\alipay-sdk-java.jar -DgroupId=com.alipay -DartifactId=sdk-java -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://10.0.1.xx:8080/nexus/content/repositories/snapshots/

各参数代表含义为:

-Dmaven.test.skip=true //跳过编译、测试
-Dfile=E:\jar\alipay-sdk-java.jar //jar包文件地址,绝对路径
-DgroupId=com.alipay //gruopId,可自定义
-DartifactId=sdk-java //artifactId,可自定义
-Dversion //版本号
-Dpackaging //打包方式
-DrepositoryId //远程库服务器ID
-Durl //远程库服务器地址

注:可能出现的问题

1.Return code is: 401, ReasonPhrase:Unauthorized

说明没有配置权限:打开maven conf 下的setting.xml 中加入如下代码:

 <server><id>snapshots</id><username>admin</username><password>admin</password>
</server>

因为我将jar上传至http://10.0.1.xx:8080/nexus/content/repositories/snapshots/ 所以-DrepositoryId=snapshots,而且授权id也是snapshots,如果你要上传到其它仓库下记得更改DrepositoryId和授权id

2.Return code is: 400, ReasonPhrase: Bad Request

(1)出现该问题有可能是已经上传过了这个jar,但是policy没有选择Allow Redeploy;

(2)有可能版本不符,快照版不能选择Release

前提:已经搭建好nexus maven私服,地址192.168.110.240:9091

在maven的setting.xml中找到标签,在中间加上:

<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<url>http://192.168.110.240:9091/repository/maven-public/</url>
</mirror>

服务器上有几个主要库,release,snapshots ,3rdParty,分表代表:发行版,快照版,第三方,发布到哪个库可自行根据需要选择,点击列表右边的copy按钮可看到对应库的发布地址,将该地址拷贝到-Durl参数中即可

如:

最后一个参数:

-DrepositoryId 配置的私服ID,即刚刚在setting.xml中的下的标签中配置的内容

第三种也是命令的形式

这种方式经过老郑头的实测比较可靠(举例说明),命令如下:

mvn install:install-file -Dfile=D:\\asciidoctorj-pdf-1.5.0-alpha-zh.16.jar -DgroupId=org.asciidoctor -DartifactId=asciidoctorj-pdf -Dversion=1.5.0-alpha-zh.16 -Dpackaging=jar

注意一下:这样做的前提条件是屏蔽掉你所有的镜像

然后执行命令 maven install命令

Maven 部署私服依赖相关推荐

  1. Maven 连接私服资源库配置

    2019独角兽企业重金招聘Python工程师标准>>> 1.介绍 我们项目中逐渐转入到maven构建体系下.项目在构建和部署时会依赖很多包,这些包默认从公共资源库下载,由于是国外地址 ...

  2. maven教程 IDEA中使用Maven Tomcat配置 依赖管理

    1.背景 1.1 软件是一个工程 我们在日常生活常能听到工程这个词,像桥梁工程.道路工程.南水北调工程等等. 工程说简单点就是各个行业的从业人员通过总结规律或者方法,以最短的时间和人力.物力来做出高效 ...

  3. Maven安装和依赖管理详解

    文章目录 Maven相关的概念 Maven仓库和坐标 Maven的安装 IDEA集成Maven 使用IDEA创建Maven工程 Maven的常用命令 依赖管理 Maven相关的概念 maven 资源仓 ...

  4. maven 部署nexus_设置本地Nexus存储库并从Maven部署WAR文件

    maven 部署nexus Maven Central充当中央存储库管理器,二进制文件由不同的团队/公司/个人上载并与世界其他地方共享. 就像github和其他对源代码控制非常有效的源代码存储库一样, ...

  5. 搭建maven的私服nexus

    1.搭建maven的私服     http://www.sonatype.org/nexus/downloads/     搭建私服是团队开发的基础,才能实现组内或者组间的依赖共享,要搭建私服使用工具 ...

  6. Linux使用Maven部署SpiderFlow爬虫平台

    Spider-Flow平台以流程图的方式定义爬虫,无需再编码爬虫,是一个高度灵活可配置的爬虫平台 源代码:https://github.com/ssssssss-team/spider-flow 基础 ...

  7. 使用nexus-3.0.2-02-win64搭建自己的Maven nexus私服

    使用nexus-3.0.2-02-win64搭建自己的Maven nexus私服 在Android开发中我们经常引用一些网上的android依赖,例如这种形式的 compile 'com.androi ...

  8. 实战详解Maven部署(deploy)jar到私有仓库Nexus及如何引入私仓jar包

    1 缘起 本来只打算测试jar包部署(deploy)到私仓, 可是,发现部署后与预期有些不一样,就又查了些资料, 实际验证了一下对应的功能, 比如,部署jar包区分快照版和发行版, 部署时需要使用不同 ...

  9. JavaWeb以Maven整合Mybatis报错java.lang.NoClassDefFoundError(Web项目未能完全加载Maven下的依赖)

    问题描述 为完成学校课程一个javaweb的demo,想着对数据库的访问能够更加简洁,所以用了Mybatis.因为之前有过Springboot整合Mybatis经验,所以本以为事情会简单.在Junit ...

  10. Maven高级-私服

    Maven高级-私服 6,私服 6.1 私服简介 6.2 私服安装 步骤1:下载解压 步骤2:启动Nexus 步骤3:浏览器访问 步骤4:首次登录重置密码 6.3 私服仓库分类 6.4 本地仓库访问私 ...

最新文章

  1. Python计算数据相关系数(person、Kendall、spearman)
  2. vPower系列- 前言
  3. UI Automation
  4. java中的解码和编码_关于java中编码和解码(一)
  5. CodeForces - 1491E Fib-tree(模拟)
  6. python爬取知乎live_Python爬虫 - 简单抓取百度指数
  7. C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)
  8. 关于百度地图js api的getCurrentPosition定位不准确的解决方法
  9. 冰点文库下载器Fish-v327-0221
  10. 记一次代码被公司电脑加密后,编译不通过
  11. nrf52840烧录配置(协议栈+APP)
  12. uniapp app 腾讯云 IM 通讯 封装基础登录方法
  13. flashpaper
  14. ThinkPHP 手册摘录之(跨模块)调用
  15. 10种食物让女性养颜排毒又减肥(图)
  16. mac软件卸载不干净怎么回事 mac如何卸载软件干净
  17. 清华姚班毕业生开发新特效编程语言,99 行代码实现《冰雪奇缘》,网友:大神碉堡!创世的快乐...
  18. 一种 win10 右键卡住转圈问题的排查过程
  19. Linux进程间通信:共享内存(shm)
  20. java连oracle代码,连oracle

热门文章

  1. 大数据七大岗位及职责
  2. Android8怎么格式化内存卡,安卓手机内存卡无法格式化怎么办【解方法决】
  3. Android Camera2 对焦梳理
  4. 2022茶艺师(初级)特种作业证考试题库及模拟考试
  5. 加装固态硬盘+安装win10系统
  6. 小葵花妈妈课堂开课了:《ThreadLocal 浅析》
  7. win7计算机管理打开超慢,大师解答win7系统打开资源管理器窗口速度很慢的恢复技巧...
  8. 解决%d format: a number is required, not str问题【一试灵】
  9. python怎么过滤标点符号大全_一行Python代码过滤标点符号等特殊字符
  10. PhalApi2.x笔记