首先,确保你已经部署好了你的SVN代码仓库。
关于搭建仓库可以参考这里
准备工作都结束了,就可以开始在SVN上部署Cocoapods了。
创建SVN目录
这点很重要,Cocoapods在和SVN结合的时候,对项目结构有很严格的要求。
创建项目
使用Xcode创建名为ModuleA的项目,项目下创建Classes
文件夹,我们开发的模块中代码就存放在这里。
同时使用pod spec create 文件名创建私有库配置文件
ModuleA.podspec`, 此文件要与模块名相同。
然后将项目下的文件,拷贝到trunk
目录下
接下来看看ModuleA.podspec
的内容:
Pod::Spec.new do |s|
# 模块名
s.name = "ModuleA"
# 版本号。需要注意的是:当仓库代码 push 到远程仓库的时候,需要打上 tag。tag 和 版本号必须一致!!!
s.version = "0.0.1"
# 简短描述
s.summary = "This is ModuleA for myProj"
# 模块主页 可能不存在,但是一定要写
s.homepage = "http://XXXX/ModuleA"
# license 类型
s.license = { :type => "MIT", :file => "FILE_LICENSE" }
# 创建者信息
s.author = { "姓名" => "邮箱地址" }
# 平台信息,后面的数字指的是最低的系统要求。
s.platform = :ios, "9.0"
# 推荐使用下面这几个,针对指定平台最系统配置要求
# s.ios.deployment_target = "9.0"
# s.osx.deployment_target = "11.0"
# s.watchos.deployment_target = "2.0"
# s.tvos.deployment_target = "9.0"
# 远程仓库路径
s.source = { :git => "http://EXAMPLE/ModuleA.git", :tag => "#{s.version}" }
# 需要暴露给别人的代码文件
s.source_files = "Classes", "Classes/**/*.{h,m}"
# 需要暴露给别人的资源文件
# s.resources = "Resources/*.png"
# 需要添加的系统 framework
# s.frameworks = "AFramework", "BFramework"
# 需要添加的系统 .tbd 库
# s.libraries = "iconv", "xml2"
# 是否是 ARC 环境
s.requires_arc = true
# xcconfig 路径配置
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
# 需要依赖的三方库
# s.dependency "JSONKit", "~> 1.4"
# s.dependency "AFNetWorking"
end
这里我们只做最基础配置
Pod::Spec.new do |s|
s.name = "ModuleA"
s.version = "0.0.1"
s.summary = "ModuleA for MyProject"
s.description = <<-DESC
ModuleA for MyProjectModuleA for MyProjectModuleA for MyProjectModuleA for MyProjectModuleA for MyProject
DESC
s.homepage = "http://www.baidu.com"
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { "程立卿" => "xxxxx@xx.com" }
s.source = { :svn => 'svn://10.0.3.112:8080/app/Common/ios/ModuleA', :tag => "#{s.version}" }
s.source_files = "ModuleA/Classes/**/*"
end
我们可以验证一下配置信息是否合格,使用pod lib lint
看到这个,表示已经验证通过了。接下来需要将我们的模块打包推到tags目录下。
这里我使用的是Cornerstone。
更新一下本地的代码,会发现我们的tags
目录下会创建以下的文件
这里就是打包好的我们对应的ModuleA模块了!
到这里,我们就可以使用我们的私有仓库了!
创建项目过程就不多说了,我们之间看pod init
后的Podfile
文件
target 'RootProj' do
pod 'ModuleA',:svn =>'svn://10.0.3.112:8080/ModuleA',:tag =>'0.0.1'
end
填入我们的模块名和对应的svn地址还有版本即可。
这时候我们高高兴兴的'pod update',可能会出现无法导入的情况。这时候八成是需要权限的问题,使用
svn checkout https://10.0.3.112:8080/ModuleA
然后根据提示,输入你的svn账号密码,然后再重新update即可。