You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在SPM的Package.swift中引用其他服务器的源文件?

SPM引用外部服务器单个源文件的可行性

直接在SPM的Package.swift中引用外部HTTP/HTTPS地址的单个源文件(比如https://otherwebsite.com/MySwiftFile1.swift)是不支持的。SPM的target源文件配置仅允许指向:

  • 当前Git仓库内的本地文件路径(比如Sources/MyModule/MySwiftFile.swift)
  • 通过.package()依赖引入的其他SPM包中的模块

替代解决方案

方案1:将外部文件封装为独立SPM包

把托管在外部服务器上的Swift文件封装成一个完整的SPM包,将这个包托管在外部服务器的Git仓库中。然后在主仓库的Package.swift中添加对该包的依赖:

let package = Package(
    name: "MainPackage",
    dependencies: [
        .package(url: "外部服务器的Git仓库地址", from: "1.0.0"),
    ],
    targets: [
        .target(
            name: "MainTarget",
            dependencies: ["外部包的模块名"]),
    ]
)

方案2:构建前自动下载外部文件

在项目中添加构建脚本,在SPM开始构建前,从外部服务器下载目标文件到本地的Sources目录下,然后在Package.swift中引用这个本地路径的文件。例如:

  1. 在项目根目录添加一个download_files.sh脚本,内容大致为:
#!/bin/bash
mkdir -p Sources/ExternalFiles
curl -o Sources/ExternalFiles/MySwiftFile1.swift https://otherwebsite.com/MySwiftFile1.swift
  1. 在Package.swift中配置target引用本地下载后的文件:
let package = Package(
    name: "MainPackage",
    targets: [
        .target(
            name: "MainTarget",
            path: "Sources/ExternalFiles"),
    ]
)
  1. 确保构建环境能执行该脚本,并且有访问外部服务器的权限,同时可以添加文件校验(比如MD5校验)来保证文件完整性。

内容的提问来源于stack exchange,提问作者Isaaс Weisberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:20:54