当前位置: 首页 > 编程日记 > 正文

gitLab创建自己的私有库

一.创建私有库的流程简介

  • 创建一个项目,留着后面的流程3制作私有库
  • 在可以创建私有库的地方创建一个code repository, code repository是代码仓库,我们把代码上传到这个仓库。
  • 在可以创建私有库的地方创建一个spec repository, spec repository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓库。这个仓库只用来存放podspec文件,不存放代码。
  • 克隆code repository到本地并添加私有库代码文件,上传所有文件到远端的库中并打tag
  • 创建并编辑三个私有库配置文件:创建和编辑README.md、创建和编辑LICENSE、创建和编辑podspec文件(验证podspec文件是否正确,如果有问题要确保更改完成,否则无法继续进行 )
  • 创建本地的私有仓库文件
  • 将配置文件push到远端专门存储配置文件的仓库中
  • 确认已经制作完成并使用

二.创建的详细流程

1.创建一个项目,留着后面的流程3制作私有库

1)在这里我们选择用Cocoa Touch Static Library创建一个新的工程,取名为JXTool

    

2)删除掉默认的.h和.m文件,加入自己已经准备好的工具类,最后主要就是用这个工具类去制作的私有库,这里简便起见就只是执行打印了

#import <Foundation/Foundation.h>@interface logTest : NSObject
- (void)test;
@end
#import "logTest.h"@implementation logTest
- (void)test {NSLog(@"test111111");
}
@end

2.在可以创建私有库的地方创建一个code repository(代码仓库), 一个spec repository(配置仓库)

这里我使用的是gitlab,除了gitlab之外还可以使用github(私有需要收费) 、开源中国、CODING、Bitbucket、CSDN code都可以,但这里使用gitlab来介绍所有的操作

1)点击右上角的加号按钮,创建代码仓库名为JXCodeRep

2)同上面方法,创建配置仓库名为JXSpecRep,所以此时除了名字不同外,其他都一样 .所以这里建议使用不同的仓库名字来区别这两个不同作用的仓库

3.克隆code repository到本地并添加步骤1中的私有库代码文件,上传所有文件到远端的库中并打tag

1)打开git管理工具SourceTree,点击新建按钮,选择从URL克隆选项,将上面的远程代码仓库地址复制进去,选择好自己的目标路径和名称后点击克隆

2)这时候第一次克隆下来的文件夹是没有东西的(这里不算隐藏文件)

因此别忘了按照gitLab官网进行下面操作,打开终端,在默认的路径下就行

3)拉取远程代码仓库,将我们之前步骤1中建立好的整个项目全部拖进这个文件夹替换README.md

           

4)进入SourceTree,点击文件状态,将所有的改动全选后提交,再推送到git服务器.将你需要某次修改打上一个tag 1.0,作为一个库的修改版本.注意::别忘了,勾选上"推送标签",这个非常重要

      

4.创建并编辑三个私有库配置文件

1)创建和编辑README.md、创建和编辑LICENSE(我在这里就不创建这两文件了,只是简单说下创建方法)

这个文件在github中也有,是项目的说明文件,根据自己的项目做一些说明.打开终端,cd到工具类文件所在的路径下

2)创建和编辑.podspec文件(这步最容易出错)

打开终端输入

cd ~/

为了后续私有库的维护,建议名字和工具类所在项目名一样,进入到根目录后创建一个名字叫JXTool.podspec的文件

pod spec create JXTool

准备通过vim进行编辑

vim JXTool.podspec

先别按下 i进入编辑模式,清空全部内容

:%d

内容清空后点击i 进入编辑模式,输入以下内容

Pod::Spec.new do |s|s.name         = "JXTool"s.version      = "1.0" #当前版本s.summary      = "JXTool a hello " #描述s.homepage     = "http://git.op.xywy.com/liunian/JXCodeRep.git" #库文件主页地>址s.license      = 'MIT's.author       = { 'liunian' => 'liunian@xywy.com' }  #开发者s.source       = { :git => 'git@git.op.xywy.com:liunian/JXCodeRep.git', :tag => '1.0' } #文件的git地址,以及当前版本对应的tag,这个1.0就是我刚刚标注的
s.source_files = 'JXTool/JXTool/*' #文件所在的目录,后面*是一个正则表达式,目录我下面会有解释# s.source_files = 'JXTool/JXTool/*.{h,m}' #文件所在的目录,后面*.{h.m}是一个正则表达式,目录我下面会有解释# s.resources    = 'JXTool/JXTool/*.xib' #资源文件所在的目录图片,xib等,这个demo没有用到s.framework    = 'UIKit' #当前这个库所依赖的系统的库s.platform     = :ioss.requires_arc = true #是否支持arc
end

退出编辑esc,保存

:wq

3)进入终端后验证.podspec文件是否有效

pod spec lint JXTool.podspec --allow-warnings

有passed validating则表示spec文件验证通过了

5.创建'本地的私有仓库'文件

1)使用下面的命令就可以在本地生成配置文件的仓库,建议这个本地的名字也和远程的一致,这样便于区分和后期的维护.
JXSpecRep 是你远端创建的配置文件仓库的名字,后面是配置文件仓库远端的地址 .
注意此时不需要cd进入任何目录,从默认位置输入这个命令,即在点击终端快捷方式打开的状态下直接输入下面的命令即可

pod repo add JXSpecRep http://git.op.xywy.com/liunian/JXSpecRep.git

2)查看是否添加成功

pod repo list

如果出现了JXSpecRep,则代表添加成功

或者返回桌面command+shift+G查询本地配置仓库管理文件夹

~/.cocoapods/repos

 

6.将配置文件push到远端专门存储配置文件的仓库中

1)将配置文件push到远端专门存储配置文件的仓库中 ,本地的也会同步更新
此时需要cd进入本地的.podspec所在的路径,默认是根目录,否则会找不到podspec文件
使用下面的命令即可,有问题可以参考报错信息去修改
JXSpecRep 是你创建的spec repository的名字,后面是你本地创建的.podspec文件

pod repo push JXSpecRep JXTool.podspec --allow-warnings

2)出现下面信息,则代表成功

  或者查询本地私有spec管理文件夹,看到了JXTool则代表成功

open ~/.cocoapods/repos

3)可以在远端仓库中看到这个文件,并且远端配置文件仓库中有且只有这一个文件

7.确认已经制作完成并使用

1)查询是否有我们需要的私有库

pod search JXTool

2)新建一个项目后,初始化pod

pod init

编辑Podfile文件

vim Podfile

在合适的地方pod我们的私有库

source 'http://git.op.xywy.com/liunian/JXSpecRep.git'
pod 'JXTool', '1.0'

cd到项目的路径下

pod install

3)导入头文件,使用工具类

大功告成!

三.补充

下面主要讲述在同一台笔记本操作,也就是还保留着之前所有相关本地的文件

1.更新私有库

1)参照上面步骤3将私有库克隆下来,然后进行工具类代码的修改,重新提交到远程仓库,并设置标签,例如2.0,即再执行一遍步骤3的1)和4)

修改的地方

#import "logTest.h"@implementation logTest
- (void)test {NSLog(@"test222222");
}
@end

2)编辑.podspec文件,我这里是同一台笔记本还有原先的文件,所以不用再次创建了,直接编辑

vim JXTool.podspec

修改下面的信息,即所有1.0的地方都修改成最新的标签2.0

Pod::Spec.new do |s|s.name         = "JXTool"s.version      = "2.0" #当前版本s.summary      = "JXTool a hello " #描述s.homepage     = "http://git.op.xywy.com/liunian/JXCodeRep.git" #库文件主页地>址s.license      = 'MIT's.author       = { 'liunian' => 'liunian@xywy.com' }  #开发者s.source       = { :git => 'git@git.op.xywy.com:liunian/JXCodeRep.git', :tag => '2.0' } #文件的git地址,以及当前版本对应的tag,这个1.0就是我刚刚标注的
s.source_files = 'JXTool/JXTool/*' #文件所在的目录,后面*是一个正则表达式,目录我下面会有解释# s.source_files = 'JXTool/JXTool/*.{h,m}' #文件所在的目录,后面*.{h.m}是一个正则表达式,目录我下面会有解释# s.resources    = 'JXTool/JXTool/*.xib' #资源文件所在的目录图片,xib等,这个demo没有用到s.framework    = 'UIKit' #当前这个库所依赖的系统的库s.platform     = :ioss.requires_arc = true #是否支持arc
end

后面的步骤依然和之前的一样,参照上面的步骤,参照上面的步骤4.3)

见到JXTool (2.0)极为成功

3)将配置文件push到远端专门存储配置文件的仓库中,参照上面的步骤6

  

见到上面的则为成功

4)确认已经制作完成并使用

编辑原先测试demo的Podfile文件,pod update之后运行看结果

终于大功告成!!!!

由于我是第一次去主动在gitlab上创建私有库,查了很多资料都不是很详细,看了也是迷糊的很,所以特别抽空研究了一番,结合几篇别人的文章,自动亲手实践,最后整理成这篇笔记,可能对于熟悉创建私有库的人来说废话很多,很冗余,但是真心希望能帮助和我一样的新手,一起学习。

转载于:https://www.cnblogs.com/jingxin1992/p/9022301.html

相关文章:

AngularJS安装配置与基础概要整理(上)

以前整理的&#xff0c;可供参考。 安装&#xff1a; 1.首先要安装node.js和它的npm包管理系统。&#xff08;nodejs相关待整理&#xff09; 2.安装grunt .grunt是一个基于任务的Javascript工程命令行构建工具。 在dos窗口输入&#xff1a;npm install grunt-cli -g 具体模块安…

通风与防排烟工程电子书_菠菜关于防排烟系统使用软接头工程量计算注意及定额选用建议...

前言&#xff1a;前几日分享《工程建设标准强制性条文》关于安装专业相关内容&#xff0c;其余规范部分&#xff0c;建议大家自行查看&#xff0c;不再继续分享。今日继续分享《建筑防烟排烟系统技术标准》相关内容依据1&#xff1a;2.1 设于排风兼排烟系统上的软接管必须为不燃…

超级账本(Hyperledger Fabric)之权限管理浅析

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 超级账本&#xff08;Hyperledger Fabric&#xff09;之权限管理浅析 超级账本是联盟链的代表&#xff0c;而其相对于共链&#xff08;例如比特币&a…

Java通过JDBC连接MySQL数据库

代码描述&#xff1a;把前台获取的字段作为查询条件&#xff0c;返回符合条件的记录。 1 package com.imooc.dao;2 3 import java.sql.Connection;4 import java.sql.DriverManager;5 import java.sql.PreparedStatement;6 import java.sql.ResultSet;7 import java.sql.SQLExc…

关于C#调用非托管DLL,报“内存已损坏的”坑,坑,坑

因客户需求&#xff0c;与第三方对接&#xff0c;调用非托管DLL&#xff0c;之前正常对接的程序&#xff0c;却总是报“内存已损坏的异常”&#xff0c;程序进程直接死掉&#xff0c;折腾到这个点&#xff08;2018-05-11 00:26&#xff09;&#xff0c;终于尘埃落定,直接上程序…

python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案

一、内存泄漏像Java程序一样&#xff0c;虽然Python本身也有垃圾回收的功能&#xff0c;但是同样也会产生内存泄漏的问题。对于一个用 python 实现的&#xff0c;长期运行的后台服务进程来说&#xff0c;如果内存持续增长&#xff0c;那么很可能是有了“内存泄露”。1、内存泄露…

以太坊发展历史回顾

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 以太坊历史 最近历史记录&#xff0c;请查看Taylor Gerring博客发帖。 诞生 2013年末Vitalik Buterin第一次描述了以太坊&#xff0c;作为他研究比…

医学图像分类_TauMed:医学诊断领域中的图像分类测试数据扩增

南京大学智能软件工程实验室iselab.cn摘要&#xff1a;深度学习在医学分类方面取得了长足的进步。但是&#xff0c;在许多现实的环境中&#xff0c;用于训练和测试的数据不足且不平衡&#xff0c;深度学习模型将很容易过度拟合且泛化能力很差。并且由于医院和患者的状况并不总是…

仲兆鹏 160809329 第5次

---恢复内容开始--- 第一题 #include<stdio.h>//输入三个数有小到大排序 int main() {int a;int b;int c;printf("输入三个整数:");scanf("%d %d %d",&a,&b,&c);if(a>c) { ta; ac; ct; } if(b>c) { tb…

promise实现多个请求并行串行执行

早上查资料&#xff0c;偶然发现这个话题&#xff0c;发现自己并不会&#xff0c;于是乎&#xff0c;下来研究了一下。 想想之前我们用jquery写请求的时候&#xff0c;要实现请求的串行执行&#xff0c;我们可能是这么做的。 $.ajax({url: ,data: ,success: function (data) {$…

人工智能和区块链的融合

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 AI与区块链结合&#xff0c;可能性有多大&#xff1f; 人工智能和区块链是促进各行业创新和转型的主要技术&#xff0c;对这一点各行业已达成共识。…

AngularJS学习笔记(3)——通过Ajax获取JSON数据

通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例&#xff0c;使用JSON前todo.html代码如下&#xff1a; <!DOCTYPE html> <html ng-app"todoApp"> <head> <meta charset"UTF-8"> <title>TO DO List</tit…

python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频

爬取哔哩哔哩小视频前言&#xff1a;想必大家都对小视频感兴趣吧&#xff0c;今天的爬虫的内容为将哔哩哔哩中的视频下载到本地&#xff0c;今天爬取的网站为URL : https://vc.bilibili.com/p/eden/all#/?tab%E5%BE%A1%E5%AE%85%E6%96%87%E5%8C%96&tagCOSPLAY1. 分析站点a…

区块链双语术语大全

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 这是一个简单而又全面的Blockchain词汇表&#xff0c;用于令人印象深刻的blockchain语言世界。 51% Attack&#xff08;51%攻击&#xff09; 当一…

SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)

五、锁与事务隔离级别 事务隔离级别简单的说&#xff0c;就是当激活事务时&#xff0c;控制事务内因SQL语句产生的锁定需要保留多入&#xff0c;影响范围多大&#xff0c;以防止多人访问时&#xff0c;在事务内发生数据查询的错误。设置事务隔离级别将影响整条连接。 SQL Serve…

开源造轮子:一个简洁,高效,轻量级,酷炫的不要不要的canvas粒子运动插件库...

一&#xff1a;开篇 哈哈哈&#xff0c;感谢标题党的莅临~ 虽然标题有点夸张的感觉&#xff0c;但实际上&#xff0c;插件库确实是简洁&#xff0c;高效&#xff0c;轻量级&#xff0c;酷炫酷炫的咯。废话不多说&#xff0c;先来看个标配例子吧&#xff1a; &#xff08;codepe…

python启动appium服务_python下appium服务的自启动和关闭

最近想把前不久写的webUi框架改写成mobile_Ui,也就是 用于手机端的UI自动化框架&#xff0c;目前已经完成该框架的改写&#xff0c;记录其中一些问题&#xff0c;框架后续会单独写篇幅介绍遇到的第一个问题就是1、python怎么能够自动启动和自动关闭appium服务&#xff0c;这样每…

以太坊源码分析

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 前言&#xff1a;人类正在步入数据时代。如今&#xff0c;全球每天就产生超过500亿GB的数据&#xff0c;据IDC预测&#xff0c;到2025年这一数据将超…

yapi-docker

yapi-docker 转载于:https://www.cnblogs.com/vickey-wu/p/9026153.html

灵活性是原则性基础上的灵活

灵活性是原则性基础上的灵活&#xff0c;没有原则性的灵活是耍流氓。 原则性是质&#xff0c;灵活性是量&#xff0c;灵活性有度的要求&#xff0c;就是不能改变质。转载于:https://www.cnblogs.com/jcode/p/5961867.html

办公室自动化系统_信息化管理建设 公司办公室用自动盖章机贵吗?

办公室自动盖章机的应用我们首先要考虑到底有没有用&#xff0c;之后在考虑贵不贵的问题。自动盖章机也称智能印章&#xff0c;是企业单位建设信息化印章管理方式的一种&#xff0c;过去由于人工盖章和管章效率低&#xff0c;且风险较大&#xff0c;为了避免因印章管理不当引起…

加密货币银行是什么?它又将如何运作?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 比特币曾经承诺&#xff0c;将帮助每个人拥有“属于自己的 银行 ”。但这里需要强调一点&#xff0c;在了解到银行实际提供的众多服务之后&#xff…

【Python】实现将testlink上的用例指定格式保存至Excel,用于修改上传

背景 前一篇博客记录的可以上传用例到testlink指定用例集的脚本&#xff0c;内部分享给了之后&#xff0c;同事希望能将testlink上原有的用例下载下来&#xff0c;用于下次修改上传&#xff0c;所有有了本文脚本。 具体实现 获取用例信息 def download_testcase():""…

Java随机字符串:随机数字字符串,工具类

Java中生成随机数&#xff0c;字符串的工具类 1. 调用方法需要传入生成字符串的长度和需要的类型 生成随机数字 生成随机字母字符串 生成随机字符串数字等 ......... 2. 总共8种类型&#xff0c;具体看工具类中的注释。 1 import java.util.Date;2 import java.util.Random;3 i…

python怎么查看代码错误_python中的错误如何查看

python常见的错误有1.NameError变量名错误2.IndentationError代码缩进错误3.AttributeError对象属性错误4.TypeError类型错误5.IOError输入输出错误6.KeyError字典键值错误具体介绍1.NameError变量名错误报错&#xff1a;>>> print aTraceback (most recent call last…

Facebook的加密货币即将到来会对整个加密货币领域意味着什么

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 Facebook的加密货币即将到来&#xff0c;它对整个加密货币领域意味着什么&#xff1f;这里不仅涉及到用户采用、节点参与&#xff0c;还涉及到合规、…

threadlocal使用场景_深入剖析ThreadLocal

点击上方 IT牧场 &#xff0c;选择 置顶或者星标技术干货每日送达朋友们在遇到线程安全问题的时候&#xff0c;大多数情况下可能会使用synchronized关键字&#xff0c;每次只允许一个线程进入锁定的方法或代码块&#xff0c;这样就可以保证操作的原子性&#xff0c;保证对公共资…

zabbix 监控tomcat实例

zabbix 监控tomcat实例环境:CentOS 7.2zabbix-3.0.5 LTSnginx-1.10.1php-7.0.11mariadb-10.1.18tomcat-9请参看zabbix-3.0.x LTS源码安装配置Tomcat7/8/9安装配置tomcat启用jmxhttp://tomcat.apache.org/tomcat-9.0-doc/monitoring.htmlhttp://docs.oracle.com/javase/6/docs/t…

什么是USDT以及如何使用它?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 什么是USDT&#xff1f; 如果您使用Poloniex或Bittrex交易所交易&#xff0c;那么您可能已经多次见过UDST市场了&#xff0c;您甚至经常使用它。 …

BZOJ3930: [CQOI2015]选数

BZOJ3930: [CQOI2015]选数 Description 我们知道&#xff0c;从区间[L,H]&#xff08;L和H为整数&#xff09;中选取N个整数&#xff0c;总共有(H-L1)^N种方案。 小z很好奇这样选出的数的最大公约数的规律&#xff0c;他决定对每种方案选出的N个整数都求一次最大公约数&#xf…