您可以使用 IntelliJ 原生匯入器Eclipse Buildship 在 IDE 中開啟此範例。

本指南示範如何使用 gradle init 建立 Swift 程式庫。您可以逐步遵循指南從頭開始建立新專案,或使用上述連結下載完整的範例專案。

Swift 程式庫外掛與 設定快取 不相容。

您將建置的內容

您將產生一個遵循 Gradle 約定的 Swift 函式庫。

您需要準備的

建立專案資料夾

Gradle 內建一個名為 init 的工作,會在一個空的資料夾中初始化一個新的 Gradle 專案。init 工作會使用(也內建的)wrapper 工作來建立一個 Gradle wrapper 腳本,gradlew

第一步是為新專案建立一個資料夾並切換目錄到該資料夾中。

$ mkdir demo
$ cd demo

執行 init 工作

從新的專案目錄中,在終端機中使用下列指令執行 init 工作:gradle init。當出現提示時,選擇 2: library 專案類型和 6: Swift 作為實作語言。接著您可以選擇用於撰寫建置腳本的 DSL - 1 : Groovy2: Kotlin。對於其他問題,請按 Enter 使用預設值。

輸出結果會像這樣

$ gradle init

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Scala
  6: Swift
Enter selection (default: Java) [1..6] 6

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Project name (default: demo):


BUILD SUCCESSFUL
2 actionable tasks: 2 executed

init 工作會產生一個具有下列結構的新專案

├── gradle (1)
│   ├── libs.versions.toml (2)
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew (3)
├── gradlew.bat (3)
├── settings.gradle.kts (4)
└── lib
    ├── build.gradle.kts (5)
    └── src
        ├── main
        │   └── swift (6)
        │       └── Hello.swift
        └── test
            └── swift (7)
                └── HelloTests.swift
                └── LinuxMain.swift
├── gradle (1)
│   ├── libs.versions.toml (2)
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew (3)
├── gradlew.bat (3)
├── settings.gradle (4)
└── lib
    ├── build.gradle (5)
    └── src
        ├── main
        │   └── swift (6)
        │       └── Hello.swift
        └── test
            └── swift (7)
                └── HelloTests.swift
                └── LinuxMain.swift
1 為 wrapper 檔案產生的資料夾
2 產生的版本目錄
3 Gradle wrapper 啟動腳本
4 定義建置名稱和子專案的設定檔
5 lib 專案的建置腳本
6 預設 Swift 原始碼資料夾
7 預設 Swift 測試原始碼資料夾

您現在已設定好專案以建置一個 Swift 函式庫。

檢閱專案檔案

settings.gradle(.kts) 檔案中有兩行有趣的程式碼

settings.gradle.kts
rootProject.name = "demo"
include("lib")
settings.gradle
rootProject.name = 'demo'
include('lib')
  • rootProject.name 為建置指定名稱,會覆寫預設行為,即以建置所在的目錄命名建置。建議設定固定名稱,因為如果專案是共用的,資料夾可能會變更,例如 Git 儲存庫的根目錄。

  • include("lib") 定義建置包含一個稱為 lib 的子專案,其中包含實際程式碼和建置邏輯。可以透過其他 include(…​) 陳述式新增更多子專案。

我們的建置包含一個稱為 lib 的子專案,代表我們正在建置的 Swift 函式庫。它是在 lib/build.gradle(.kts) 檔案中設定的

lib/build.gradle.kts
plugins {
    `swift-library` (1)
    xctest (2)
}

library {
    targetMachines.add(machines.linux.x86_64) (3)
}
lib/build.gradle
plugins {
    id 'swift-library' (1)
    id 'xctest' (2)
}

library {
    targetMachines.add(machines.linux.x86_64) (3)
}
1 套用 swift-library 外掛程式,以新增建置 Swift 函式庫的支援
2 套用 xctest 外掛程式,以新增建置和執行 Swift 測試可執行檔 (Linux) 或套件 (macOS) 的支援
3 設定此函式庫的目標作業系統和架構

檔案 src/main/swift/Hello.swift 如同這裡所示

產生的 src/main/swift/Hello.swift
/*
 * This source file was generated by the Gradle 'init' task
 */

class Hello {
    public func greeting() -> String {
        return "Hello, World!"
    }
}

產生的測試,src/test/swift/Hello.swift,如下所示

產生的 src/test/swift/HelloTests.swift
/*
 * This source file was generated by the Gradle 'init' task
 */

import XCTest
@testable import Lib

class HelloTests: XCTestCase {
    public static var allTests = [
        ("testGreeting", testGreeting),
    ]

    func testGreeting() {
        XCTAssertEqual("Hello, World!", Hello().greeting())
    }
}

產生的測試類別有一個單一的 XCTest 測試。測試會實例化 Hello 類別,呼叫其方法,並檢查它是否傳回預期的值。

建置函式庫

$ ./gradlew build

BUILD SUCCESSFUL in 0s
4 actionable tasks: 4 executed
您第一次執行 wrapper 腳本 gradlew 時,可能會延遲,因為 gradle 的版本會下載並儲存在您本地的 ~/.gradle/wrapper/dists 資料夾中。

build 任務會編譯 Swift 來源、將物件檔連結成共用函式庫,並執行測試。如要建置靜態函式庫,請參閱 靜態函式庫範例

本指南未涵蓋對其他專案的依賴關係。如要深入瞭解此主題,請查看 傳遞依賴關係範例 以取得示範。
將函式庫發佈到 Maven 儲存庫不在本指南的範圍內。如要深入瞭解此主題,請查看 簡單函式庫範例 以取得示範。
Gradle 與多個 IDE 整合:Visual StudioXcodeClion。如要深入瞭解,請查看各自連結的文件,以在您的專案中設定這些 IDE 整合。

發佈建置掃描

深入瞭解您的建置在幕後執行哪些動作的最佳方法,是發佈 建置掃描。為此,只要使用 --scan 旗標執行 Gradle 即可。

$ ./gradlew build --scan

BUILD SUCCESSFUL in 0s
4 actionable tasks: 4 executed

Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Service defined at https://gradle.com/terms-of-service.
Do you accept these terms? [yes, no] yes

Gradle Terms of Service accepted.

Publishing build scan...
https://gradle.com/s/5u4w3gxeurtd2

按一下連結,探索已執行的任務、已下載的依賴關係,以及更多詳細資料!

摘要

完成了!您現在已成功使用 Gradle 設定並建置 Swift 函式庫專案。您已學會如何

  • 初始化產生 Swift 函式庫的專案

  • 建置函式庫,包括執行其測試

後續步驟