ホームページ > Java > &#&チュートリアル > JeKa: Maven Central で公開する最も簡単な方法

JeKa: Maven Central で公開する最も簡単な方法

Linda Hamilton
リリース: 2024-12-30 21:28:13
オリジナル
760 人が閲覧しました

JeKa: The Simplest Way to Publish on Maven Central

JeKa は、シンプルさを重視した最新の Java ビルド ツールです。
この投稿では、最小限の構成で Maven Central に公開する方法を示します。

前提条件: Maven Central で公開するには、OSSRH アカウントが必要です。

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.

代わりに、@project.gitVersioning.enable=true を使用してバージョンを推測するために Git に依存することを選択します。現在のコミットにタグがない場合、バージョンは [branch]-SNAPSHOT に設定されます。それ以外の場合は、タグ名になります。

パブリケーションリポジトリの構成

@maven.publication.predefineRepo=OSSRH は、事前定義された OSSRH リポジトリに公開するように Jeka に指示します。このリポジトリは、バージョンが -SNAPSHOT で終わる場合は OSSRH スナップショット リポジトリに公開し、それ以外の場合はリリース リポジトリに公開するように構成されています。

リポジトリは、次の環境変数を使用してシークレットを渡します:

  • jeka.repos.publish.username: OSSRH アカウントのユーザー名
  • jeka.repos.publish.password: OSSRH アカウントのパスワード
  • jeka.gpg.secret-key: 文字列としてのアーマード 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 を作成します (プロジェクト: パック)。
  • ソースと 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 を使用すると、公開する追加のアーティファクトを定義できます。

次の例では、公開時に 2 つのアーティファクトが生成されます:

  1. ドキュメントを含む ZIP ファイル。
  2. シェーディングされた 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 またはその他のリポジトリに公開するための、よりシンプルかつ強力な方法を提供します。

Web サイト、ビデオ、例にアクセスして、Jeka がより良くできることをすべて理解してください。

免責事項: 私は Jeka の作者です。

以上がJeKa: Maven Central で公開する最も簡単な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート