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 バージョンの両方を宣言できます。両方のバージョンがホスト マシンに存在しない場合は、自動的にダウンロードされます。
公開された 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.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 を実行するだけです。
これにより次のことが行われます:
何が公開されるかを確認するには、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 つのアーティファクトが生成されます:
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 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 サイトの他の関連記事を参照してください。