场景回顾:

应用客户端如果需要接入到Apollo配置服务中心的话,需要引用apollo-client的依赖包使之与config-server保持连接,从而可以及时的收到更新之后的配置信息。

1.将apollo-client项目打包部署到自己公司的maven私服上去

在eclipse上部署maven项目到私服上去执行mvn clean package deploy命令,报错如下:

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project apollo-client: Failed to deploy artifacts:
Could not transfer artifact com.phicomm.smarthome:apollo-client:jar:0.0.1-20180604.034828-34 from/to snapshots (http://your.company.maven/repository/maven-snapshots/)
: Failed to transfer file: http://your.company.maven/repository/maven-snapshots/com/phicomm/smarthome/apollo-client/0.0.1-SNAPSHOT/apollo-client-0.0.1-20180604.034828
-34.jar. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

在执行命令部署的时候提示没有部署成功,分析上面的错误信息后找到了原因,是因为在向私服传包的时候需要认证。

打开/Users/lingye/Project/maven/apache-maven-3.5.0/conf/settings.xml,发现配置还都是默认的...

<server><id>siteServer</id><privateKey>/path/to/private/key</privateKey><passphrase>optional; leave empty if not used.</passphrase>
</server>

Maven 知识回顾:

  • maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。
  • maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,其他项目在依赖此项目的时候直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。
  • 如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。

我们把上面的注释掉后配置我们自己的服务器,并填入账号密码。

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

注意这里配置的server的id必须和pom文件中的distributionManagement对应仓库的id保持一致,maven在处理发布时会根据id查找用户名称和密码进行登录和文件的上传发布。
并且在自己的项目中加入发布到私服的配置。

<distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://you.company.com:5050/repository/maven-releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>http://you.company.com:5050/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

经过上面的配置 我们在eclipse中使用package deploy部署成功

然后我们在apollo客户端尝试引用试试,项目没有启动成功报错提示没有引入core 没有找到Tracer而报错了

2.咦,官网上命名说只依赖apollo-client就可以的,怎么还要依赖apollo-core包?

我又用上面的方法将core包发布到私服上面,而后在客户端再次引入它,这下项目可以跑起来了,但是又找不到配置文件,但是我已经在启动时加了-Denv=DEV,我尝试使用-Ddev_meta=http://localhost:8080,这样是可以的。

机智的我发现怎么跟文档上说的不一样,脑袋一转发现问题并没有这么简单。

3.仔细阅读了一下《分布式部署指南》中的最后一部分

https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

mvn clean deploy -DskipTests -pl apollo-client -am $META_SERVERS_OPTS-pl(--projects <arg>) 手动选择需要构建的项目,项目间以逗号分隔;
-am(--also-make) 构建指定模块,同时构建指定模块依赖的其他模块;

 正规的流程是在项目外层的scripts/build.sh 来构建项目
   在此脚本的最后一段命令中将包部署上去的。

我们也来试一试,当然第一次也是失败了。

Failed to deploy artifacts/metadata: Cannot access ${snapshots.repo} with type default using the available connector factories: BasicRepositoryConnectorFactory:
Cannot access ${snapshots.repo} using the registered transporter factories: WagonTransporterFactory: Unsupported transport protocol

这是因为没有在setting.xml中配置发布项

<profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><releases.repo>http://you.company.com:5050/repository/maven-releases/</releases.repo><snapshots.repo>http://you.company.com:5050/repository/maven-snapshots/</snapshots.repo></properties>
</profile>

这次发布成功,在客户端中只依赖一个apollo-client然后重新导入,会发现一下会引用过来两个包apollo-client和apollo-core以及meta_info也会打入到core包中,我们启动的时候只需要加上-Denv=DEV即可顺利启动了。

总结:没有认真阅读开源官方给出的说明文档,下次要认真!

  

转载于:https://www.cnblogs.com/lingyejun/p/9145179.html

部署apollo-client到maven私服上时遇到的问题及排查过程相关推荐

  1. maven私服上传jar包

    maven私服上传jar包 登录maven私服 上传jar 登录maven私服 点击Repositories,选择上传到的仓库 3rd party 上传jar 选择Artifact Upload 选择 ...

  2. mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程

    最近在做zabbix的数据库MySQL5.6升级5.7时,出现主从延迟问题,这个问题困扰了很久没有解决,昨天终于解决了,整理了一下整个排查过程,分享给大家. 环境说明: mysql主库为5.6的版本, ...

  3. 史上最全搭建MAVEN私服上传并使用JAR包教程

    最近用dubbo做项目和第三方频繁RPC调用,如果对方改了接口参数或者新增接口,后台所有开发人员都需要把第三方提供的jar包打成pom文件引入本地环境.很累!!! 今天就给大家分享一下搭建Nexus3 ...

  4. Maven私服上使用自己的私服下载不了第三方jar包的问题解决

    在maven的settings.xml中添加,另外的三个mirror即可解决问题: <mirrors><!-- mirror| Specifies a repository mirr ...

  5. 【笔记】Maven私服上传jar

  6. V3S拍照上传又拍云bug排查过程

    1.确保收到mqtt命令后去生效抓图标志. void CreateOpenDoorJpgName(void *recordData) {     int i;     int ret;     uns ...

  7. 记录一次线上CPU负载过高的排查过程

    背景 一大早收到运维同学反馈.线上某台机器cpu的负载达到了97%以上,为了不影响机器上服务的正常运行,急需找到导致负载过高的原因并将负载降到合理的区间. 用到命令 top/uptime:查看负载情况 ...

  8. 搭建Maven私服那点事

    摘要:本文主要介绍在CentOS7.1下使用nexus3.6.0搭建maven私服,以及maven私服的使用(将自己的Maven项目指定到私服地址.将第三方项目jar上传到私服供其他项目组使用) 一. ...

  9. Jenkins CI服务器搭建及Maven私服Nexus

    Jenkins CI服务器搭建及Maven私服Nexus 一:Jenkins持续集成(CI)1 1.1:Jenkins简介及特性1 1.2:Jenkins安装1 1.3:Jenkins配置1 1.4: ...

最新文章

  1. 类加载器双亲委派模式
  2. 扒一扒搜索引擎是如何工作的?
  3. 122. Best Time to Buy and Sell Stock II
  4. 【终极方法】解决IDEA搜索不到Lombok插件的问题(IDEA 不能识别 @Slf4j,@Getter ,@Setter注解)
  5. python核心编程怎么做_Python核心编程:8个实践性建议
  6. HDU 2076 夹角有多大(题目已修改,注意读题)
  7. Acrel-2000Z智能电力监控系统解决方案
  8. 3dmax材质丢失插件_3dmax找丢失贴图的材质插件怎么用
  9. PHY之MDIO解析
  10. 利用Excel批量快速发送电子邮件
  11. python实时监控网站更新_Python监控Github项目更新并自动下载
  12. Carsim 2019 安装后打不开 未响应 acquiring licence information
  13. 实现数字手写图片识别(纯代码)
  14. 主外键关联删除(on delete set null和on delete cascade)
  15. 谷歌PR权重 Google PR与百度权重
  16. Linux下硬盘安装fedora,Fedora 10硬盘安装教程
  17. 深入理解Java虚拟机 第2版 周志明著(三)
  18. 2019微生物组——16S扩增子分析专题培训第四期
  19. PDF图纸转换CAD图纸怎样操作呢?
  20. 蚂蚁感冒问题暴力解决

热门文章

  1. 视频教程-Oracle12数据库管理/DBA/数据库工程师培训-Oracle
  2. 太阳能路灯网站SEO执行方案
  3. android 手电筒开发
  4. 奇偶校验(附代码实现)
  5. 计算机如何修改用户名和密码忘了怎么办,电脑用户名密码忘记怎么办
  6. Inventor记录
  7. 老胡的周刊(第084期)
  8. mysql数据库insert 插入语句示例
  9. C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用)
  10. 数据结构-二叉树的顺序存储