如何在一个git仓库中拥有多个pod

时间:2014-12-19 06:38:01

标签: ios objective-c git cocoapods

上下文

我们正在开发一个大型软件平台,其中包括Android,服务器,Web和iOS(以及其他人)。为了使我们的所有代码保持最新状态,我们将它们全部保存在一个Master repo中(这非常重要,因为我们在所有平台上共享模型,因此提交可能会影响许多不同的平台)。

为了处理iOS方面,我们决定将项目分解为模块化pod,以便我们可以轻松地在其他库(也包括pod)中共享它们,这样当我们发布它时,对我们的客户来说很容易将我们的api包含在他们现有的项目中(即我们希望使用cocoapods结构来获得cocoapods提供的所有好处)。

为了实现这一目标,我已经为我们的每个项目设置了私有规格仓库和pod规格。

tl; dr :我们有一个主git repo,它包含我们所有的代码(多个平台,包括多个不同的pod)。我们希望保留此结构,但也能够从repo中的代码创建pod。

问题

我遇到的问题是我为pod规格找到的所有文档都说你必须使用这种格式:

spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => spec.version.to_s }

让我兴奋的唯一部分是我们的repo不仅包含一个pod(更不用说iOS代码了)。

是否可以执行以下操作:

spec.source = { :git => 'https://github.com/MyCompany/Master/MyCompanyCoreDir', :tag => spec.version.to_s }

我们非常感谢任何帮助

干杯

靛蓝

2 个答案:

答案 0 :(得分:16)

在单个Git存储库中可以有多个cocoapod。

正如您所说,您可以为每个导致特定pod代码的源指定不同的源。

为了实现这一点,您还必须在规范中设置正确的 source_files ,例如:s.source_files = 'SomePodDirectory/*.swift'

您甚至可以使用来源s.source = { :git => 'https://github.com/MyCompany/Repository.git', :tag => 'SomePodName-v'+String(s.version) }这样的内容管理每个广告连播的多个版本。

在这种情况下,您应该在Git上创建适当的标签(例如SomePodName-v1.0.0)。

答案 1 :(得分:0)

您要查找的确切术语是podspec文件中的 subspec 。在podspec文件的 subspec 下,提及source_files目录。

例如:

  # SwiftStdlib Extensions
  s.subspec 'SwiftStdlib' do |sp|
    sp.source_files  = 'Sources/Extensions/SwiftStdlib/*.swift'
  end

  # Foundation Extensions
  s.subspec 'Foundation' do |sp|
    sp.source_files  = 'Sources/Extensions/Foundation/*.swift'
  end 

如果需要更多详细信息,只需检查SwifterSwift Podspec文件。