如何git创建私有仓库 CocoaPods 仓库

CocoaPods创建私有pods - Darrick - 博客园
Blog Stats
Stories - 0
Comments - 0
Trackbacks - 0
由于项目需求,需要把项目的不同模块拆分出来即 组件化 ,一开始想做成多target模式,后来换成私有pods
CocoaPods的安装和使用,网上很多,自行搜索即可。
(),但我断断续续的折腾了两三天没成功,实在不想搞了,只能老老实实搞git的。有谁弄成功了希望不吝赐教。
cd到需要做库的工程目录下 创建一个podspec文件pod spec create podName (如:pod spec create testPods,会在当前目录生成&testPods.podspec)修改testPods.podspec文件,修改.podspec文件时可参考可以用vim修改 也可以使用文本编译器进行修改,(注意:使用文本编辑器修改时注意标点符号,要保证的半角符号,文本编辑器有时会自动改成全角的)
在使用时需要注意的是:Podfile文件里面的写法区别于公有库 &示例:pod 'Utility',:git=&"http://xxxxx.git"(替换为真实的git地址)
更具体的请参考:
        
我遇到了这个错误:Unable to run command 'StripNIB AQPhotoPickerView.nib' - this target might include its own product
是因为我指定的文件夹里有xib文件,xib文件算是资源文件的,需要另外添加s.resource引入
  s.source_files
= "pod/classes/**/*"
s.source_files
= "pod/classes/**/*.{h,m}"
s.resource = "pod/classes/TestViewController.xib"
如何在私有库里引用私有库(基于CocoaPods v1.0.0)
  一般,在组件化之路上,不可避免的会用到 私有库中引用私有库,即 s.dependency "私有库"。网上的资料我没有找到完整的、可行的流程,我断断续续的折腾了3、4天才终于解决了这个问题,特来次记录下:
1、首先要简单说下pod install 的流程
  终端运行 pod install后,会默认从github上搜索公开库的,因此,我们需要在PodFile上指明我们的私有库的地址,在PodFile 的顶上添加如下代码:
  source '/CocoaPods/Specs.git' # 这个是github上公有库的地址,没有这个,pod就不会去公有库查询,就不能下载公有库的东西
  source '私有库地址',可以放多个source
2、前面的步骤基本一致:
  1)创建远程仓库
  2)创建并编辑 .podspec 文件
  3)pod repo add #repo名# #远程仓库地址,如:http://git.xxxxx/xx/test.git#
  4)验证 pod lib lint
3、验证通过
  pod spec lint --sources='http://git.#私有仓库地址#,/CocoaPods/Specs'
  核心就在这了,不然会报找不到repo的错误。
  cd到项目文件夹 &
      $ git tag #版本号#&
      $ git push --tags
5、推送到远端仓库(记住:在推送之前要先打tag,不然会出错)
  pod&repo&push&#本地Repo名字# #.podspec名# & 如:pod&repo&push&test test.podspec
  打开远端仓库,会看到刚才打的tag
6、私有库更新后,要重复4、5步
&这里需要补充说明一点,
  私有库有引用私有库的情况,在验证已经推送podspec的时候都需要加上所有的资源地址,不然,pod会默认从cocoapods官方查询的。
  如,私有库a要引用私有库b,在验证与推送私有库a的时候,要加上私有库b的远程仓库地址,如下
  注意:要在pod lib lint 或者 pod spec lint 以及 pod repo push ....时候加上被引用的私有库地址  
 pod spec lint --sources='#私有库b的远程仓库地址(如:http://xxxxxx.git)#,/CocoaPods/Specs'
 pod repo push #本地Repo名字# #.podspec名# --sources='[私有库b的远程仓库地址(如:http://xxxxxx.git)],/CocoaPods/Specs'
 pod spec lint --sources='http://xxxxxx/iOSRepos.git,/CocoaPods/Specs'
 pod repo push iOSTest iOSTest.podspec --sources='/xfx/iOSRepos.git,/CocoaPods/Specs'
  有多少个私有库就加多少个地址,用 半角&,&隔开
统一管理私有库版本
  前面我们拆分了一堆组件,地址都是独立的太过分散不好管理,因此需要建立一个统一的repo来管理这些组件。
  1、在远端创建私有repo,如:/xfx/iOSRepo.git
  2、添加私有repo到CocoaPods
    :      
$ pod repo add REPO_NAME SOURCE_URL
注意:在你创建本地pods库的时候,需要检查你推送到源地址的权限。
你可以使用下面两条指令去检查你的安装是否完成:
$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .
    如:pod repo add iOSRepo &/xfx/iOSRepo.git
    注:我在用 pod repolint 检查时,会在后面无限打出 .......... 字符,不知啥原因,不过没有影响。
  3、添加组件的 .podspec到刚创建的repo
    这一步参考前面更新的&5、推送到远端仓库,不过repo名要改成刚才创建的repo名,即 iOSRepo
  报错 &&&&error: include of non-modular header inside framework module &&&&[-Werror,-Wnon-modular-include-in-framework-module]
  解决办法:在pod lib lint 或者 pod spec lint 以及 pod repo push ....时候加上 &&--use-libraries
pod lib lint --use-libraries
pod spec lint --use-libraries
#当然,在提交的时候也要加上
pod repo push &repoName& &podspec& --use-libraries
&  参考:
  引用自己的或者第三方的framework或者.a静态库
  加上以下代码即可:
s.ios.vendored_frameworks = "xxx/**/*.framework"
s.ios.vendored_libraries = "xxx/**/*.a"~/.cocoapods/repos
公司的项目正准备组件化开发,最近研究了一下CocoaPods建立私有仓库,分享一下
先屡一下思路
大致分为以下几步:
本地建立一个索引库Spec Repo,映射到远程仓库(将来使用该仓库里面的.podspec文件定位到相应的代码)
创建pod工程(实现具体的组件代码)
生成spec文件
向本地的Spec Repo提交spec文件
pod新的文件
&1&.本地创建索引库 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
官方的pod其实就是一个仓库里面放了很多开源的Spec Repo(关于如何创建cocoapods这里就不做说明了)假设你已经安装好了cocoapods &当cd 到~/.cocoapods/repos可发现如下截图那个master中就是官方的Spec Repo所在
看到这个目录之后我们要做的第一步就是在repos目录下建立属于自己的私有Spec Repo用来管理我们的代码
在终端运行
#pod repo add [本地repos的名称] [远程仓库的地址,这里可以用开源中国的,公司自己的代码管理平台地址等等]
$ pod repo add DemoSpec
https://XXX.git
运行完上面的代码重新cd 到~/.cocoapods/repos可以发现刚刚建立的文件以及可以看到了
看你这个说明本地的私有Spec Repo已经搭建好了
&2&创建pod工程 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
这里没什么好说的,就是自己本地找个目录创建一个新的工程,可以使用pod的,有旧的项目的话更简单了(这里不做过多的讲解)
&3&生成spec文件 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
cd到第二步建好的工程下运行如下命令
#$&pod&spec&create&[项目sepc的名字] [代码的远程仓库的地址和第一步的地址不一定要一样,如果不一样的话如果有多个项目的话可以共用一个soure]$ pod spec create PodTestSpec https://xxx.git
成功以后会看到
Pod::Spec.new do |s|
= "PodTestSepec" #podsepc名称
= "1.0.0"#版本号
= "year descr."#框架的妙手
s.homepage
= ""#写你主页的地址
这里是我随意写的
= { "fangshufeng" =& "" }
s.platform
= :ios, "7.0"
= { :git =& "地址二", :tag =& "1.0.0" }#地址二写的就是步骤3写的地址 tag是版本号
s.source_files
= "podTest/**/*.{h,m}"#文件的目录
s.resource
= "podTest/podTest.bundle"#文件的资源 包括图片什么的
s.requires_arc = true
此时可以push本地的代码到远程的仓库一次了 记得打一个tag号
cd 到建好的工程下验证一下写好的spec文件
pod lib lint
验证通过后继续往下
&4&向本地的Spec Repo提交spec文件 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
$ pod repo push DemoSpec PodTestSpec.podspec
#前面是本地Repo名字 后面是podspec名字
完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/DemoSpec目录下查看
├── LICENSE
├── DemoSpex
└── 1.0.0
└── PodTestSepc.podspec
└── README.md
再search命令查看
$ pod search PodTestSpec
-& PodTestSpec (0.1.0)
year descr.
pod 'PodTestSpec', '~& 1.0.0'
- Homepage: https://
- Versions: 1.0.0 [DemoSpec repo]
到此我们的私有pod以及制作好了&
&5&pod的使用 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
另外新建一个工程
在podfile中加入
# Uncomment the next line to define a global platform for your project
source "地址一"
platform :ios, '7.0'
target 'hh' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'PodTestSpec', '~& 1.0.0'
好的 到此一个私有的pod弄完了
阅读(...) 评论()可以通过podrepoChelp查看相关命令;;3.如何添加公共类库到私有repo仓库:;a);b)我们建立的公共类库的podspec文件提交地;c)首先要保证公共类库的git里需要指定LICE;如果新创建一个公共类库:;可以通过pod命令完成:podlibcreatl;如果是以前已经建好的一个类库:;需要手动拷贝LICENSE文件,并在podspe;d)更
可以通过 pod repo Chelp 查看相关命令;
3. 如何添加公共类库到私有repo仓库:
b) 我们建立的公共类库的podspec文件提交地址如下:
c) 首先要保证公共类库的git里需要指定LICENSE;
如果新创建一个公共类库:
可以通过pod命令完成:pod lib creat libname, 可以按照模版建立License和podspec文件
如果是以前已经建好的一个类库:
需要手动拷贝LICENSE文件,并在podspec文件中指定,否则添加到本地repo中会有warning,添加不进去;
d) 更新LICNECE和代码,记得需要进行tag标记
当更新LICENCE或者提交代码之后,一定要打tag标记,并修改podspec文件中source tag;
Git add * -A
git tag ‘1.0.2’
git push --tags
e) 使用如下命令对创建的类库pospec文件进行xcode编译验证,验证通
过之后,会自动将podspec类库添加到本地的私有repo中;
$ pod repo push REPO_NAME SPEC_NAME.podspec
此命令会对podspec文件进行验证,特别是版本信息和LICENCE文件;
注意:一般提交类库的时候一定要先在这一步对类库进行验证,修改类库结构和报错;因为验证的时候必须打上tag,为了保证tag版本,可以使用拿1.0.0版本测试
git tag -d 1.0.0
git push origin :refs/tags/1.0.0
如果本地添加成功, 再将podspec 文件提交到git线上管理;
如何使用私有repo仓库
1. Clone线上repo仓库到本地
$ pod repo add podspec https://git./commonlibraryios/podspec.git
第一次创建可以自动下载线上私有仓库git中的所有公共类库;
2. 更新线上repo仓库地址:
更新所有repo(包括master): pod repo update
更新某个repo : pod repo update podspec
公共类库私有repo
目前为止的公共类库包括:
使用cocoaPods的常用问题:
1. 自定义库公开文件的配置
s.ios.public_header_files = 'URS/URSAuth.h', 'URS/URSARC.h'
在.podspec文件中配置public_header_files,配置的文件可以在使用pod的项目中像调用系统库一样使用, 如下所示:
#import &URSARC.h&
注意: s.ios.private_header_files 和public_header_files 是相对立的,只需要配置其中一个就可以了;另外一个等于s.ios.source_files C public_header_files =
private_header_files
2. default_subspec 的定义问题
s.default_subspec = 'Core'
表示自动加载Core的subspec, 其他的subspec一般都是在default_subspec基础上发展起来的;如下所示:
注意:如果定义了default_subspec,pod时只加载默认的类库,subspec需要继续pod才能下载,如下所示的subspec,使用: pod ‘SDWebImage/MapKit’
如果自定义类库中subspec,最好在description中写好subspec的调用说明;
3. 自定义库文件层次太深问题的解决
当遇到自定义库工程的目录时,我们一般时通过subspec来解决,如下所示: s.subspec 'patch' do |ss|
ss.ios.deployment_target = '5.0'
ss.ios.public_header_files = 'NetEasePatch/patch/*.h'
ss.ios.source_files = 'NetEasePatch/patch'
但当目录层次较浅的时候,我们可以通过嵌套的subspec来实现,但是当目录层次较深的时候,subspec嵌套较多,但其实没有必要,在xcode工程里面,不管引用的目录层次多深,直接引用头文件也能够调用到,所以我们用下面的方法只引用source文件而不用依次建立目录:
ss.subspec 'extensions' do |sss|
sss.ios.deployment_target = '5.0'
sss.ios.private_header_files = 'NetEasePatch/Wax/extensions/**/*.h'
sss.ios.source_files = 'NetEasePatch/Wax/extensions/**/*.{h,m,c}'
sss.libraries = &xml2&
sss.ios.exclude_files = 'NetEasePatch/Wax/extensions/json'
4. xcode工程无法找到系统库头文件的问题, 需要手动配置xcode项目build
setting项的问题
比如,当引用xml2库的时候:
sss.libraries = &xml2&
会提示找不到系统的libxml2.h 文件,需要在pod工程文件的Header search Path 中,加入${SDK_DIR}/usr/include/libxml2
这种情况我们可以通过pod配置选项完成:
sss.xcconfig = { 'HEADER_SEARCH_PATHS' =& '${SDK_DIR}/usr/include/libxml2' }
这样会在引入的类库target的Header Search Path中配置:
${PODS_NETEASEPATCH_HEADER_SEARCH_PATHS}
在最后总的pod target中的Header Search Path中配置:
${SDK_DIR}/usr/include/libxml2
电影票ios项目pod重构
对于以前直接引入第三方库的代码,建议如下流程进行:
比如说JSonkit
1. 先通过pod search JsonKit 查询pod公共库中是否存在该库,如果存在,最新版
本是多少,也可以直接通过git地址去github上查看第三方库的源文件,印证一下该库和本地引用的库是否一致;
如果一致的话,直接将pod引用方法 复制过来即可;
2. 每次链接一个库,pod install/update之后, 对workspace的工程进行编译,看是
否报错,如果不报错,继续下一项;
如果有错,需要检查报错项,有可能时因为版本升级之后,调用方法变了,我们需要改变; 也有可能是之前版本不支持ARC,新版本支持ARC,需要进行调用调整;如果改动比较大,可以看时间是否充裕,如果不充裕,跳过; 如果充裕修改工程代码,运行看相关界面和功能是否正常;
3. 当公用库引用完成之后,我们可以把项目中提炼出得一些公共功能代码独立成一个
类库,具体方法见上面的“自定义仓库配置文件”部分,
? 先在本地测试,和工程调用测试通过;
? 通过之后,上传代码到git/svn,或其他版本管理工具;并对公共类库进行文档说明:
主要功能,如何调用?
? 将工程中得 Podfile的调用全部改成线上git/svn地址,看整个项目是否能够正确
运行,如果运行成功,项目重构完成;
? 更新公共类库git管理列表;(如下所示)
三亿文库包含各类专业文献、各类资格考试、幼儿教育、小学教育、外语学习资料、行业资料、文学作品欣赏、高等教育、CocoaPods公共类库管理方案和使用心得82等内容。 
 CocoaPods的使用_调查/报告_表格/模板_实用文档。iOS 插件cocoapods的使用 ...是一个对各种第三方类库的一个整合,cocoapods 就是各种第三方类库的类库管理...  Cocoapods的简单使用介绍_计算机软件及应用_IT/计算机_专业资料。自己整理了下往上最新的安装教程 Cocoapods 的简单使用介绍使用前要安装: 官网地址: https://cocoa...  CocoaPods 使用手册=_计算机软件及应用_IT/计算机_专业资料。CocoaPods 使用手册...使用手册(简易版) 暂无评价 8页 免费
CocoaPods公共类库管理方... 暂无评价...  02 下载依赖:根据分析依赖的结果, 下载指定版本的类库到本地 项目中。 03 生成Pods项目:创建一个Pods项目专门用来编译和管理第 三方框架,CocoaPods会将所需的框架...  iOS的Cocoapods安装及使用_计算机软件及应用_IT/计算机_专业资料。iOS第三方的集成工具Cocoapods的安装及使用 iOS 的 Cocoapods 安装及使用一、安装 cocoapods 第一...  CocoaPods 一个 Objective-C 第三方库的管理利器 介绍:开发应用的时候第三方的库是不可缺少的,能提高开发的效率。一些经常用到的库,在新的项目里用是,你又得...  使用CocoaPods开发并打包静态库_计算机软件及应用_IT/计算机_专业资料。使用CocoaPods开发并打包静态库Cocoapods 作为 OS X 和 iOS 开发平台的 类库管理工具,已经非...  接下来,我们就可以使用命令来安装第三方类库了,(确保终端路径在项目 根目录)...CocoaPods公共类库管理方... 暂无评价 12页 免费
详解预科-什么是预科? 暂无...CocoaPods建立私有仓库 spec repo - 简书
CocoaPods建立私有仓库 spec repo
好多项目里都有公共的组件,copy来,copy去很容易出错,而且不容易维护,所以就想到用用cocoapods 建自己的私有库,Carthage用法虽然相对简单,但是它是把公共组件都放在framework里不容易单步调试,所以我还是选择用Cocoapods 来建立私有仓库参考
1. 创建私有Spec Repo
先来说第一步,什么是Spec Repo?它是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,它实际是一个Git仓库remote端在GitHub上,但是当你使用了Cocoapods后它会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。这个master目录的结构是这个样子的
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
因此我们需要创建一个类似于master的私有Spec Repo,这里我们可以fork官方的Repo,也可以自己创建,个人建议不fork,因为你只是想添加自己的Pods,没有必要把现有的公开Pods都copy一份。所以创建一个 Git仓库,这个仓库你可以创建私有的也可以创建公开的,不过既然私有的Spec Repo,还是创建私有的仓库吧,需要注意的就是如果项目中有其他同事共同开发的话,你还要给他这个Git仓库的权限。因为GitHub的私有仓库是收费的,我还不是GitHub的付费用户,所以我使用了其他Git服务,我使用的是CODING,当然还有其他的可供选择开源中国、Bitbucket以及CSDN Code.
创建完成之后在Terminal中执行如下命令
# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
$ pod repo add Specs-Repo /lizhi0123/Specs-Repo.git
此时如果成功的话进入到~/.cocoapods/repos目录下就可以看到Specs-Repo(只是个名字,会根据你设置的名称而不同) 这个目录了。至此第一步创建私有Spec Repo完成。
如下图所示 ↓,但是刚开始的时候你的Specs-Repo应该是空的,只是多个Specs-Repo文件夹而已
Paste_Image.png
执行 pod repo list 查看repo列表$pod repo list
Paste_Image.png
PS:如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可。
2. 创建Pod项目工程文件
参考说白了,就是你项目所用的公共类,你以后项目里所要引用的,类似于这个我已经建好了
(UIButton title 和image 垂直显示)你步就是根据你们自己的需要,自己设置了。(^__^) 嘻嘻……
如果是有现有的组件项目,并且在Git的版本管理下,那么这一步就算完成了,可以直接进行下一步了。如果你的组件还在你冗余庞大的项目中,需要拆分出来或者需要自己从零开始创建一个组件库,那么我建议你使用Cocoapods提供的一个工具将第二步与第三步结合起来做。现在来说一下这个工具,相关的文档介绍是 就拿我创建的podTestLibrary为例子具体讲一下这里是如何操作的,先cd到要创建项目的目录然后执行
$ pod lib create UIButton-Vertical
之后他会问你四个问题,1.是否需要一个例子工程;2.选择一个测试框架;3.是否基于View测试;4.类的前缀;4个问题的具体介绍可以去看官方文档,我这里选择的是1.yes;2.Specta/Expecta;3.yes;4.PTL。 问完这4个问题他会自动执行pod install命令创建项目并生成依赖。
$ tree PodTestLibrary -L 2PodTestLibrary├── Example
├── PodTestLibrary│
├── PodTestLibrary.xcodeproj│
├── PodTestLibrary.xcworkspace│
├── Podfile
demo APP 的依赖描述文件
├── Podfile.lock│
├── Pods
demo APP 的依赖文件
└── Tests├── LICENSE
开源协议 默认MIT
├── Pod
组件的目录
├── Assets
└── Classes
├── PodTestLibrary.podspec
第三步要创建的podspec文件
└── README.md
markdown格式的README
9 directories, 5 files
以上是项目生成的目录结构及相关介绍。
接下来就是向Pod文件夹中添加库文件和资源,并配置podspec文件,我把一个网络模块的共有组件放入Pod/Classes中,然后进入Example文件夹执行pod update命令,再打开项目工程可以看到,刚刚添加的组件已经在Pods子工程下Development Pods/PodTestLibrary中了,然后编辑demo工程,测试组件,我并没有使用提供的测试框架进行测试,这里就先不介绍了。
注:这里需要注意的是每当你向Pod中添加了新的文件或者以后更新了podspec的版本都需要重新执行一遍pod update命令。测试无误后需要将该项目添加并推送到远端仓库,并编辑podspec文件。通过Cocoapods创建出来的目录本身就在本地的Git管理下,我们需要做的就是给它添加远端仓库,同样去GitHub或其他的Git服务提供商那里创建一个私有的仓库,拿到SSH地址,然后cd到PodTestLibrary目录
$ git add .
$ git commit -s -m
"Initial Commit of Library"
$ git remote add origin :wtlucky/podTestLibrary.git #添加远端仓库
$ git push origin master
#提交到远端仓库
因为podspec文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag,
$ git tag -m
"first release"
$ git push --tags
#推送tag到远端仓库
做完这些就可以开始编辑podspec文件了,它是一个Ruby的文件,把编辑器的格式改成Ruby就能看到语法高亮,下面我贴上我的podspec文件,并在后面以注释的形式说明每个字段的含义,没有涉及到的字段可以去查阅
Pod::Spec.new do |s|
= 'UIButton-Vertical' #名称
= '0.1.0' #版本号
= 'UIButtom 垂直显示Title 和 Image' #简短介绍
s.description
OC,UIButtom 垂直显示Title 和 Image,
s.homepage
= '/lizhi0123/UIButton-Vertical' #主页
= { :type =& 'MIT', :file =& 'LICENSE' } #开源协议
= { 'lizhi0123' =& 'zhang_zhi_' } #作者信息
= { :git =& '/lizhi0123/UIButton-Vertical.git', :tag =& s.version.to_s } #git地址
s.ios.deployment_target = '8.0' #最低支持的ios版本
s.source_files = 'UIButton-Vertical/Classes/**/*' #开源类
编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令
$ pod lib lint
-& PodTestLibrary (0.1.0)
PodTestLibrary passed validation.
时,说明验证通过了,不过这只是这个podspec文件是合格的,不一定说明这个Pod是可以用的,我们需要在本地做一下验证。
验证远程库pod spec lint
3.创建podspec文件
我们需要执行此博客的 第1-7步,就可以了,不需要执行第8,9,10步。
①.创建.podspec
然后cd到你项目的目录,执行命令 你也可以使用vim创建,只要创建就可以了
// 注 UIButton-Vertical 这个是你框架的名称
$ pod spec create UIButton-Vertical
②.编辑.podspec
创建好后打开,删除注释, 前面有#的为注释,如果你想知道每个东西的含义可以了解一下整理之后的文件
Pod::Spec.new do |s|
= 'UIButton-Vertical' #名称
= '0.1.0' #版本号
= 'UIButtom 垂直显示Title 和 Image' #简短介绍
s.description
OC,UIButtom 垂直显示Title 和 Image,
s.homepage
= '/lizhi0123/UIButton-Vertical' #主页
= { :type =& 'MIT', :file =& 'LICENSE' } #开源协议
= { 'lizhi0123' =& 'zhang_zhi_' } #作者信息
= { :git =& '/lizhi0123/UIButton-Vertical.git', :tag =& s.version.to_s } #git地址
s.ios.deployment_target = '8.0' #最低支持的ios版本
s.source_files = 'UIButton-Vertical/Classes/**/*' #开源类
接下来讲解一下每行代码的含义s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错s.version:版本号s.ios.deployment_target:支持的pod最低版本s.summary: 简介s.homepage:项目主页地址s.license:许可证s.author:作者s.social_media_url:社交网址,这里我写的微博默认是Twitter,如果你写Twitter的话,你的podspec发布成功后会@你s.source:项目的地址s.source_files:需要包含的源文件s.resources: 资源文件s.requires_arc: 是否支持ARCs.dependency:依赖库,不能依赖未发布的库s.dependency:依赖库,如有多个可以这样写例如
s.dependency = 'AFNetworking'
s.license= { :type =& "MIT", :file =& "LICENSE" }这里建议大家这样写,如果写别的会报警告,导致后面一直提交失败,这里军哥已经跳了很多坑
source_files:写法及含义建议大家写第一种或者第二种
"YJSettingTableView/*"
"YJSettingTableView/YJSettingTableView/*.{h,m}"
"YJSettingTableView/**/*.h"
“*” 表示匹配所有文件
“*.{h,m}” 表示匹配所有以.h和.m结尾的文件
“**” 表示匹配所有子目录
s.source 常见写法
s.source = { :git =& "/coderYJ/YJSettingTableView.git", :commit =& "68defea" }
s.source = { :git =& "/coderYJ/YJSettingTableView.git", :tag =& 1.0.0 }
s.source = { :git =& "/coderYJ/YJSettingTableView.git", :tag =& s.version }
commit =& "68defea" 表示将这个Pod版本与Git仓库中某个commit绑定
tag =& 1.0.0 表示将这个Pod版本与Git仓库中某个版本的comit绑定
tag =& s.version 表示将这个Pod版本与Git仓库中相同版本的comit绑定
③.创建LICENSE(许可证/授权)文件,此文件必须要有
军哥在这里被坑过,创建一个文件名字命名为LICENSE,内容为:只需要把前面的版权改一下就行了,后面的都一样
Copyright (c)
YJSettingTableView Software Foundation ( is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INTHE SOFTWARE.
④.上传到Git
将包含配置好的 .podspec, LICENSE 的项目提交 Git
因为cocoapods是依赖tag版本的,所以必须打tag,以后再次更新只需要把你的项目打一个tag然后修改.podspec文件中的版本接着提交到cocoapods官方就可以了,提交命令请看下面
执行命令//为git打tag, 第一次需要在前面加一个vgit tag "v1.0.0"
//将tag推送到远程仓库
git push --tags
7.验证.podspec文件
到此检查一下你工程下面的文件, 你的项目, .podspec文件, LICENSE文件
验证会先测试本地 .podspec 文件是否存在语法错误.
然后执行命令
// --verbose 如果验证失败会报错误信息
pod spec lint UIButton-Vertical.podspec --verbose
验证过程中:
-& UIButton-Vertical
验证成功后:UIButton-Vertical.podspec passed validation.
验证失败:[!] The spec did not pass validation, due to 1 error.
这个过程会出现很多错误,这里不一一列举,大家按照错误信息自行修改,不过一般不会出现错误,只要你按照军哥说的做,基本上是没有问题的,因为军哥走过的坑已经告诉你们了
4.本地测试podspec文件
我们可以创建一个新的项目,在这个项目的Podfile文件中直接指定刚才创建编辑好的podspec文件,看是否可用。 在Podfile中我们可以这样编辑,有两种方式
platform :ios, '7.0'
pod 'UIButton-Vertical', :path =& '~/code/Cocoapods/podTest/UIButton-Vertical'
pod 'UIButton-Vertical', :podspec =& '~/Desktop/lizhi0123Github/UIButton-Vertical/UIButton-Vertical.podspec'
#指定podspec文件
然后执行pod install命令安装依赖,打开项目工程,可以看到库文件都被加载到Pods子项目中了,不过它们并没有在Pods目录下,而是跟测试项目一样存在于Development Pods/PodTestLibrary中,这是因为我们是在本地测试,而没有把podspec文件添加到Spec Repo中的缘故。
在项目中编写代码,测试库文件无误后就可以开始下一步了,提交podspec到Spec Repo中。
5.向Spec Repo提交podspec
向Spec Repo提交podspec需要完成两点一个是podspec必须通过验证无误,在一个就是删掉无用的注释(这个不是必须的,为了规范还是删掉吧)。 向我们的私有Spec Repo提交podspec只需要一个命令
$ pod repo push Specs-Repo UIButton-Vertical.podspec
#前面是本地Repo名字 后面是podspec名字
完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/Specs-Repo目录下查看
├── LICENSE├── UIButton-Vertical│
└── 0.1.0│
└── UIButton-Vertical.podspec└── README.md
再去看我们的Spec Repo远端仓库,也有了一次提交,这个podspec也已经被Push上去了。至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了
$ pod search UIButton-Vertical
-& UIButton-Vertical (0.1.0)
Just Testing.
'UIButton-Vertical'
'~& 0.1.0'
- Homepage: https:
//coding.net/u/wtlucky/p/podTestLibrary
//coding.net/wtlucky/podTestLibrary.git
- Versions: 0.1.0 [WTSpecs repo]
这里说的是添加到私有的Repo,如果要添加到Cocoapods的官方库了,可以使用trunk工具,具体可以查看。
6. 使用制作好的Pod
在完成这一系列步骤之后,我们就可以在正式项目中使用这个私有的Pod了只需要在项目的Podfile里增加以下一行代码即可
source '/CocoaPods/Specs.git'
#私有Spec Repo
source '/lizhi0123/Specs-Repo.git'
pod 'MBProgressHUD', '~& 0.9'
pod 'AFNetworking', '~& 3.1.0'
pod 'UIButton-Vertical', '~& 0.0.1'
注意:source '/CocoaPods/Specs.git' #必须写要不然search的时候找不到cocoapods里的库然后执行pod update,更新库依赖,然后打卡项目可以看到,我们自己的库文件已经出现在Pods子项目中的Pods子目录下了,而不再是Development Pods。pod update 更新所有的库,有时不需要更新master 库,可以用 $ pod repo update [NAME]然后再执行 pod search 时 就会显示 你自己建的库

我要回帖

更多关于 maven私有仓库 搭建 的文章

 

随机推荐