web-dev-qa-db-ja.com

MavenアーティファクトIDの命名規則のベストプラクティス(制限はありますか?)

私のチームはMavenを初めて使用するため、プロジェクトのアーティファクトIDを選択するための明確なガイダンスを見つけることができませんでした。

命名規則のガイド は、artifactIDは

「小文字で奇妙な記号を付けずに、どのような名前でも」

しかし、私のグループの一部の人々は、groupIDの両方のArtifactIDに逆ドメイン名スタイルを使用したいと考えています。

上記のガイドラインに加えて、中央リポジトリで見たすべての例に基づいて、逆ドメインスタイルのアーティファクトIDを持つことは理にかなっていないと思いますが、それが実際に無効であるか、単に不快であるかどうかはわかりません。ピリオド(。)文字を含むArtifactIDを効果的に処理できないさまざまなリポジトリマネージャーについて何か読んだことを漠然と覚えていますが、どこで読んだか覚えていません。今は見つかりません。

MavenアーティファクトIDで許可されているキャラクターにルールがある場合、どのようなルールがありますか?

19
carej

ここでの始まりとして、この主題を扱ったいくつかの投稿:

ポインタ

そしてスタックオーバーフローで!

次に、artifactIdでgroupIdを使用しないことをお勧めします。これは冗長です。

私はあなたの質問に最も関連性があると思われるsonatypeドキュメントを引用します:

ソナタイプの命名規則

groupIdは、すべてのプロジェクトにわたってプロジェクトを一意に識別するため、命名スキーマを適用する必要があります。これは、パッケージ名の規則に従う必要があります。つまり、少なくとも管理するドメイン名である必要があり、必要な数のサブグループを作成できます。例えば。 org.Apache.maven、org.Apache.commons groupIdの細分性を判断する良い方法は、プロジェクト構造を使用することです。つまり、現在のプロジェクトが複数モジュールプロジェクトの場合、新しい識別子を親のgroupIdに追加する必要があります。例えば。 org.Apache.maven、org.Apache.maven.plugins、org.Apache.maven.reporting

artifactIdは、バージョンなしのjarの名前です。作成した場合は、小文字で奇妙な記号を付けずに、任意の名前を選択できます。それがサードパーティのjarである場合は、配布されているjarの名前を使用する必要があります。メイベン、コモンズ数学

version配布する場合、数字とドット(1.0、1.1 、1.0.1、...)。日付は通常SNAPSHOT(夜間)ビルドに関連付けられているため、使用しないでください。サードパーティのアーティファクトの場合は、バージョン番号を使用する必要があります。見た目も変です。 2.0、2.0.1、1.3.1

そのため、groupId[〜#〜]と[〜#〜]でリバースDNSを使用することは、パッケージ名が適切であることを示しています。再度アーティファクトIDで使用しないでください。

20
Jean-Rémy Revy

GroupIdはJavaのパッケージ名のようなものですが、artifactIdはクラス名に似ていますが(実際はそうではありません)、クラス名には関係があると思います。Mavenでは通常は、特にartifactIdであるモジュール/プロジェクトに名前を付けます。

さらに、artifactId here に関するヒントを見つけました。

4
khmarbaise