JeKa 是一個注重簡單性的現代 Java 建置工具。
開始使用 Java 時,開發人員通常只是寫一些程式碼,編譯並執行它。然而,這還不足以創建其他人可以重複使用的有用的 Java 應用程式或程式庫。為了用 Java 建構一些實用的東西,我們需要:
這通常是使用傳統的建置工具來完成的,例如 Maven 或 Gradle。這些工具需要大量學習,並且可能涉及繁瑣的配置。
一個更簡單的替代方案是 JBang,它可以讓您編寫幾乎單一檔案的 Java 應用程式並輕鬆共享它們。
另一方面,Jeka 提供簡單的依賴管理和部署 ala JBang,同時允許您建立標準的多類應用程式或包含適當測試的程式庫。
先決條件:必須安裝 Jeka。
提示:要列出可用選項,請執行:jeka base: --doc。
要建立一個基礎結構,準備好立即開始編碼,請執行:
jeka base: scaffold scaffold.kind=APP
您將獲得以下項目結構:
. ├── jeka-src <- Source root directory │ ├── _dev <- Optional package containing all non-prod (build and test) │ │ ├── test │ │ └── Build.java │ └── app <- Sugested base package for production code/resources │ └── App.java ├── jeka-output <- Generated dir where artifacts as jars, classes, reports or doc are generated ├── jeka.properties <- Build configuration (Java and jeka version, kben configurations, ...) └── README.md <- Describes available build commands
所有 Java 程式碼都應該位於 jeka-src 資料夾中。
_dev 是一個特殊的套件,包含原始碼和依賴項,僅用於開發(例如,測試、建置)。如果您是 Java 新手,可以忽略或刪除它。
鷹架範例在 app 套件中包含一個 App 類別。您可以在任何您喜歡的包中新增或修改類別。
要與 IntelliJ 同步,請執行:
jeka intellij: iml --force
如果 IntelliJ 中沒有出現更改,請前往專案的根目錄,然後執行:jeka intellij: initProject。
App.java 類別宣告一個 @JkDep 註解來引用函式庫。您可以根據需要新增任意數量的庫。一個好的做法是在同一個基類中聲明所有庫。
@JkDep("com.github.lalyos:jfiglet:0.8.9") @JkDep("com.fasterxml.jackson:jackson-bom::pom:2.18.2") @JkDep("com.fasterxml.jackson.core:jackson-core") @JkDep("com.fasterxml.jackson.core:jackson-annotations") public class App { public static void main(String[] args) { ... } }
查看依賴符號的詳細資訊。
此外,您可以將 JAR 檔案複製並貼上到以下目錄中,以自動將它們包含為依賴項:
├── jeka-boot <- Jars included in the production classpath.
聲明非產品依賴
聲明對 _dev 包下任何類別的依賴,以新增依賴關係並將它們嵌入生產中。
package _dev; @JkDep("org.junit.jupiter:junit-jupiter:5.11.4") @JkDep("org.mockito:mockito-junit-jupiter:5.15.2") class Build extends KBean { ... }
提醒:修改依賴項後,不要忘記執行 jeka intellij: iml。
應用程式可以使用以下方式運行:
jeka base: scaffold scaffold.kind=APP
要在開始之前清理編譯,請使用 --clean 選項(簡稱 -c)。
如果原始程式碼託管在 Git 儲存庫中,則可以透過引用儲存庫來直接執行應用程式:
. ├── jeka-src <- Source root directory │ ├── _dev <- Optional package containing all non-prod (build and test) │ │ ├── test │ │ └── Build.java │ └── app <- Sugested base package for production code/resources │ └── App.java ├── jeka-output <- Generated dir where artifacts as jars, classes, reports or doc are generated ├── jeka.properties <- Build configuration (Java and jeka version, kben configurations, ...) └── README.md <- Describes available build commands
如果您想編寫一個庫,而不是應用程序,則需要聲明 moduleId 和版本控制,以便將其發佈到 Maven 存儲庫:
jeka intellij: iml --force
現在,您可以透過執行以下命令來發布您的庫:
@JkDep("com.github.lalyos:jfiglet:0.8.9") @JkDep("com.fasterxml.jackson:jackson-bom::pom:2.18.2") @JkDep("com.fasterxml.jackson.core:jackson-core") @JkDep("com.fasterxml.jackson.core:jackson-annotations") public class App { public static void main(String[] args) { ... } }
鷹架程式碼已經包含一個 _dev.test.MyTest 測試類,可以運行了。
├── jeka-boot <- Jars included in the production classpath.
您可以在任何您喜歡的包中添加更多測試。但是,請記住,不在 _dev 套件(或其子套件)中的測試類別將作為死程式碼包含在生產 JAR 中。
如今,Java 發展迅速,每六個月就會發布新版本。 JeKa提供了一個非常方便的Java版本之間切換的方式。只需在 jeka.properties 檔案中指定版本即可:
package _dev; @JkDep("org.junit.jupiter:junit-jupiter:5.11.4") @JkDep("org.mockito:mockito-junit-jupiter:5.15.2") class Build extends KBean { ... }
這將在下一次應用程式編譯或執行期間自動安裝 JDK 23。
除此之外,Jeka 也提供以下指令:
jeka --program arg0 args1 ... # or `jeka -p` for short
其他指令:
jeka --remote [git repo url] --program arg0 arg1 ... # or jeka -r [git repo url] -p
隨著程式碼庫的不斷增長,您可能會發現使用完整的專案結構會更舒服。
轉移到專案很容易,要了解如何操作,請造訪建置專案教學。
您也可以在程式碼庫中編寫Kotlin程式碼。只需在 jeka.properties 檔案中指定您要使用的 kotlin 版本:
@base.moduleId=org.example:my-lib @base.version=1.0.0-SNAPSHOT
現在,您可以編輯如下所示的 Kotlin 程式碼,將其與程式碼庫中現有的 Java 程式碼無縫集成,甚至創建 100% Kotlin 應用程式:
jeka maven: publish
Jeka 提供了一種實用的模式來開始編寫現實生活中的 Java 應用程序,而無需傳統構建工具的負擔。
它的多態結構允許處理逐漸增加的複雜性和大小,而不犧牲簡單性。
資源:
以上是JeKa:真正開始使用 Java 最簡單的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!