如何正确管理 Xcode 项目/工作空间中模块之间的依赖关系?

How to properly manage dependencies amongst modules in an Xcode project/workspace?

提问人:Petru Lutenco 提问时间:11/7/2023 更新时间:11/7/2023 访问量:19

问:

我正在尝试模块化我的应用程序并按层构建代码 - 数据、域、应用程序和共享。我的目标是让模块完全相互独立,并具有严格的依赖规则。 我已经开始制作一个包含单独项目的工作区,但在工作区中,所有项目都可以无限制地访问彼此的目标、文件和产品,我无法限制这一点(如此处指出 - https://developer.apple.com/documentation/xcode/managing-multiple-projects-and-their-dependencies)

第二种方法是使用 Swift 包管理器,为除应用层之外的每一层创建一个单独的包,配置它们之间的依赖关系(Data -> Domain、Data -> Shared),然后将它们作为依赖关系带到主项目中。这里的问题是,即使每一层都有自己的依赖项,它们也会渗出并且可以从引用项目访问。 例如,如果我在 Data 项目中引用 Alamofire,然后将 Data 项目作为依赖项添加到 Application 项目中,那么 Alamofire 包就可以在 Application 项目中访问(即使那里不需要它,它在 Application 层中也无关紧要,它只是通过将 Data 项目作为依赖项变得可用)。在使用 SPM 时,这是预期的,如此处所述 - https://forums.swift.org/t/preventing-spm-packages-dependencies-from-being-exported-when-importing-the-package/43660

在导入层时,如何在无法访问实现详细信息的情况下正确隔离所有层?

谢谢!

Swift Xcode 干净架构

评论


答: 暂无答案