Swift CLI Usage
This page describes the CLI commands to resolve and build, publish and download packages after creating and configuring a Swift repository on Nexus.
Resolve and Build Swift Packages
To resolve and build the Swift packages, take the following steps:
List all dependencies in the
Package.swiftfile for the package you want to resolve in either ID format or GitURL format:dependencies: [ .package(id: "<SCOPE>.<NAME>", from:"<VERSION>"), .package(url: "https:[GitURL]", from: "<VERSION>") ]
Where:
<SCOPE>- The package owner or namespace, typically derived from the source repository’s scope<NAME>- The package’s name as specified in thePackage.swiftmanifest<VERSION>- The package version, usually matching a tagged release in the source repository[GitURL]- The GitHub URL of the package
For example:
dependencies: [ .package(id: "apple.swift-nio", from: "2.65.0"), .package(id: "vapor.fluent", from: "4.8.0"), .package(id: "pointfreeco.swift-composable-architecture", from: "1.10.0"), .package(url: "https://github.com/baekteun/EventLimiter.git", from: "1.0.0") .package(id: "google.swift-protobuf", from: "1.27.0") ]Run the following command to resolve Swift packages:
swift package resolve --replace-scm-with-registry
Run the following command to perform a Swift build:
swift build --replace-scm-with-registry
Caution
For successful proxying of all Swift transitive dependencies, it is mandatory to use the following flag with swift build and swift package resolve.
--replace-scm-with-registry
Publish Swift Packages
After configuring registry and authentication, publish Swift packages to a Nexus hosted repository using the Swift PM publish command.
swift package-registry publish <package-id> <version>
Where:
<package-id>- Package identifier inscope.package-nameformat (lowercase); for examplecom.example.mypackage<version>- Semantic version, for example1.0.0
Example:
cd /path/to/your-package # Publish package swift package-registry publish example.mypackage 1.0.0
Note
Publishing Swift packages is not supported on Windows. Windows users can proxy, resolve and build dependencies, but cannot publish packages.