JetBrains Amper 0.10,期待它未來取代 Gradle

最近 JetBrains 發布了 Amper 0.10。作為一個面向 Kotlin / Java 的實驗性建置與設定工具,它的目標是透過更簡單的 YAML 設定來支援 Kotlin Multiplatform、Android、iOS、JVM 等專案管理,接著再透過 Amper CLI 完成建置、執行與工具整合。

這次之所以要聊 Amper 0.10,是因為它經過幾年發展後,已經相對變得完整不少;這次 0.10 主要包含:

  • JDK provision,可自動下載與安裝相符的 JDK,預設為 JDK 21,支援在 module.yaml 中宣告所需版本
  • Maven 轉 Amper,能讀取現有 pom.xml,產生 project.yaml / module.yaml
  • 支援第三方 Kotlin compiler plugins
  • 預設工具鏈版本包含 Android minSdk 23、Kotlin 2.3.20、Compose 1.10.3、KSP 2.3.6

那 Amper 有什麼用?簡單來說,Amper 可以用來取代現在令人頭痛的 Gradle。AGP 現在的體驗可以說又臭又長,特別是在 KMP 時代,build.gradle.kts 往往會越來越厚,而 Amper 的目的是透過 YAML 讓 IDE 更容易理解專案結構、進行自動補全,尤其是針對 KMP,使用 YAML 來宣告模組、平台、依賴與平台特定設定。

觀察 2024–2026 的更新,Amper 持續補強的是 project file tooling、Compose resources、KSP2、Android release builds、run/test UX 這些能力,可以看出它正一步一步侵蝕 Gradle 原本的使用場景。

特別是現在對 Amper 來說,standalone version(脫離 Gradle)已經成為主要發展方向,Gradle 版本逐步弱化;而對 Android 來說,Amper 可以讓專案設定更省心:

  • JDK 自動準備好,而且可以彈性設定
  • 模組定義更直觀
  • KMP / Compose / Android 放在同一套宣告模型下

雖然一開始 Amper 是建立在 Gradle 上的設定層,但後來它也逐步發展出 standalone CLI、獨立命令體系與自己的專案檔,也就是說,它既可以在 Gradle 生態中持續發展,也可以獨立成自己的執行模式;只是目前看起來,它越來越脫離 Gradle,大概可以理解成:

Amper = JetBrains 在 Kotlin / KMP / Android 建置體驗上的新抽象層與新入口

因為 Gradle 本質上是一個可程式化的 DSL,所以它既可以寫邏輯,也可以寫條件,還可以掛接生命週期,因此老專案的結果往往就是:設定檔逐漸變成「程式工程本身的一部分」。

而這個問題在 KMP 上更明顯,因為跨平台之後,環境、腳本與 CI 也變得更加複雜;但 Amper 不一樣,Amper 的官方定義是:

一個面向 Kotlin 和 Java 的建置工具,使用 YAML 進行宣告式設定,並提供 CLI 與 IDE 整合。

例如,過去 Gradle 常見的寫法是:

kotlin {
    android()
    ios()

    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("xxx")
            }
        }
    }
}

而在 Amper 裡,寫法則是:

product:
  type: app

platforms:
  - android
  - ios

dependencies:
  - xxx

那為什麼說它會變得更好?因為它的整合度與全自動化。例如 Amper 可以自動下載 JDK 並自動匹配版本,依官方說法就是:

開發者可以在不手動安裝任何東西的情況下就能執行專案。

也就是說,使用 Amper 的目的,是讓它自己就能負責「環境一致性」。特別是前面提過的 2024–2026 各種更新內容包括:

  • project model(專案結構)
  • Compose resources(資源處理)
  • KSP2(程式碼生成)
  • Android release builds(發行建置)
  • run / test UX(執行與測試)
  • compiler plugins(編譯擴充)
  • JDK provisioning(環境管理)

從這些更新可以看出一條非常清晰的覆蓋路徑,幾乎就是 Gradle 在 Android 專案裡的核心職責。

另外從 Amper 的角度來看,建置工具不只是單純的「工具」,而是包含 toolchain、預設版本、專案模型的一體化生態產品;而且宣告式的 YAML / TOML 也正逐步取代 Gradle DSL,因為在 AI 時代:

DSL 太強,IDE 太難理解,特別是多平台情境下,必須要有一個更簡單的模型。

還有一個相容小技巧:複製 Gradle,然後貼到 module.yaml 時,它會自動轉換成 Amper 適配的模式

ezgif-42d705d72a6e066c

所以,目前雖然 Amper 0.10 還不是正式的 Gradle 替代者,但它已經在系統性接管 Gradle 的職責。至少在 Kotlin / KMP / Android 的 JetBrains 生態中,Amper 已經不只是實驗性的設定層,而是持續被推進成為新的建置入口。

因此可以預期,未來等 Amper 完全取代 Gradle 的那一天,就可以不用再面對那個又臭又大的 AGP 了。


原文出處:https://juejin.cn/post/7629261406288298020


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝4   💬4   ❤️2
346
🥈
我愛JS
📝1   💬2   ❤️2
107
🥉
Gigi
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登