JeKa 是一個注重簡單性的現代 Java 建置工具。
這篇文章示範如何以最少的配置發佈到 Maven Central。
先決條件:您需要一個 OSSRH 帳戶才能在 Maven Central 上發布。
使用 JeKa,您可以透過編輯 jeka.properties 檔案來完全配置構建,如下所示:
jeka.version=0.11.11 jeka.java.version=17 jeka.inject.classpath=dev.jeka:nexus-plugin @nexus= @project.moduleId=com.github.djeang:vincer-dom @project.gitVersioning.enable=true # Configuration for deploying to Maven central @maven.publication.predefinedRepo=OSSRH @maven.publication.metadata.projectName=Vincer-Dom @maven.publication.metadata.projectDescription=Modern Dom manipulation library for Java @maven.publication.metadata.projectUrl=https://github.com/djeang/vincer-dom @maven.publication.metadata.projectScmUrl=https://github.com/djeang/vincer-dom.git @maven.publication.metadata.licenses=Apache License V2.0:https://www.apache.org/licenses/LICENSE-2.0.html @maven.publication.metadata.developers=djeang:djeangdev@yahoo.fr
請注意,依賴項列在專用的 dependency.txt 檔案中,以保持清晰的關注點分離。
要發佈到 Maven Central,請執行:jeka project:pack maven:publish。
請參閱此處的具體範例。
說明
現在您知道如何做了,讓我們解釋一下它是如何運作的。
Jeka 和 Java 版本控制
為了更好的可移植性和可重複性,我們可以聲明建立所需的 Jeka 和 Java 版本。如果主機上尚不存在這兩個版本,則會自動下載。
指定模組 ID 和版本控制
發佈的 moduleId 使用 @project.moduleId 屬性指定。
可以使用 @project.version 屬性明確指定版本。請注意,屬性可以在 jeka.properties 檔案中設定或作為命令列參數傳遞:-D@project.version=1.0.1.
相反,我們選擇依賴 Git 使用以下方式推斷版本:@project.gitVersioning.enable=true。如果目前提交沒有標籤,版本將設定為[branch]-SNAPSHOT;否則,它將是標籤名稱。
配置發布儲存庫
@maven.publication.predefinedRepo=OSSRH 指示 Jeka 發佈到預先定義的 OSSRH 儲存庫。此儲存庫配置為當版本以 -SNAPSHOT 結尾時發佈到 OSSRH 快照儲存庫,否則發佈到發布儲存庫。
儲存庫使用下列環境變數來傳遞機密:
- jeka.repos.publish.username:OSSRH 帳號使用者名稱
- jeka.repos.publish.password:OSSRH 帳戶密碼
- jeka.gpg.secret-key:Armored GPG 金鑰作為字串
- jeka.gpg.passphrase:保護金鑰的密碼
jeka.gpg.secret-key 的內容可以透過執行:gpg --export-secret-key --armor my-key-name 取得。
提供出版品元數據
強制元資料使用 @maven.publication.metadata.xxx 屬性設定。
請注意,@maven.publication.metadata.licenses 屬性需要如下格式:[license1 name]:[license1 url],[license2 name]:[license2 url],...
自動發布發布
為了方便起見,我們使用Nexus插件,
它會自動關閉暫存儲存庫,無需手動幹預。
jeka.inject.classpath=dev.jeka:nexus-plugin 指示 Jeka 從 Maven Central 取得插件,而 @nexus= 啟動它。
執行建置
要發布,只需執行:jeka project:pack maven:publish。
這將:
- 建立要發佈的 JAR(專案:pack)。
- 建立原始碼和 Javadoc JAR。
- 產生發布的POM檔案。
- 計算所有校驗和。
- 簽署所有已發布的文件。
- 將所有內容推送到 OSSRH 儲存庫。
要查看將發佈的內容,請執行:jeka maven: info。
微調
Jeka 中的微調通常以程式設計方式實現,補充 jeka.properties 檔案中的聲明性配置。這種方法允許高度靈活和強大的配置,並具有靜態類型的優點。
自訂傳遞依賴
我們可以自訂發布的POM中提到的依賴項。
在以下範例中,我們刪除 com.google.guava:guava 依賴項,並強制 jfiglet 依賴項具有 RUNTIME 範圍。
jeka.version=0.11.11 jeka.java.version=17 jeka.inject.classpath=dev.jeka:nexus-plugin @nexus= @project.moduleId=com.github.djeang:vincer-dom @project.gitVersioning.enable=true # Configuration for deploying to Maven central @maven.publication.predefinedRepo=OSSRH @maven.publication.metadata.projectName=Vincer-Dom @maven.publication.metadata.projectDescription=Modern Dom manipulation library for Java @maven.publication.metadata.projectUrl=https://github.com/djeang/vincer-dom @maven.publication.metadata.projectScmUrl=https://github.com/djeang/vincer-dom.git @maven.publication.metadata.licenses=Apache License V2.0:https://www.apache.org/licenses/LICENSE-2.0.html @maven.publication.metadata.developers=djeang:djeangdev@yahoo.fr
添加額外的文物
API 允許定義要發佈的其他工件。
在以下範例中,在發佈時產生了兩個工件:
- 包含文件的 ZIP 檔案。
- 一個陰影的 uber JAR(一個 JAR,其中包含依賴項中的所有類,並重新命名了套件以避免衝突)。
class Build extends KBean { @Override void init() { var publication = load(MavenKBean.class).getMavenPublication(); publication.customizeDependencies(deps -> deps .minus("com.google.guava:guava") .withTransitivity("com.github.lalyos:jfiglet", JkTransitivity.RUNTIME) ); } }
在其他儲存庫上發布
要發佈到 Maven Central 以外的儲存庫,您可以設定下列屬性:
class Build extends KBean { @Override void init() { var publication = load(MavenKBean.class).getMavenPublication(); publication.putArtifact(JkArtifactId.of("doc", "zip"), this::genDoc); publication.putArtifact(JkArtifactId.of("shade", "jar"), project.packaging::createShadeJar); } private void genDoc(Path targetZipFile) { // generate documentation and zip it in targetZipFile } }
將這些屬性放在[USER HOME]/.jeka/global.properties(而不是jeka.properties 檔案)中,以保持專案間的配置一致並避免冗餘。
有關更多詳細信息,請參閱文件。
與Maven的比較
以下是將專案部署到 Maven Central 的 Maven POM 設定等效項:
jeka.repos.publish=https://my.company/myrepo # Optional properties jeka.repos.publish.username=myUsername jeka.repos.publish.password=myPassword jeka.repos.publish.headers.Authorization=Bearer:: XHrU8hHKJHJ454==67g
結論
Jeka 提供了一種更簡單但功能強大的方法來建立 Java 軟體並將工件發佈到 Maven Central 或其他儲存庫,與傳統工具相比,配置和工作量要少得多。
造訪網站、影片和範例,以了解 Jeka 可以做得更好的一切。
免責聲明:我是 Jeka 的作者。
以上是JeKa:在 Maven Central 上發布的最簡單方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

Dreamweaver Mac版
視覺化網頁開發工具