私は現在、AntからMavenへのプロジェクトの移行を進めています。私としては、groupId
とartifactId
を見つけるための確立された規約を使いたいのですが、詳細な規約は見当たりません(いくつかありますが、私が考えている点をカバーしていません)。
このプロジェクトを例にとりましょう。最初はJavaパッケージです:com.mycompany.teatimer
ティータイマーは実際には2つの単語ですが、Javaパッケージの命名規則ではアンダースコアやハイフンの挿入は禁止されているので、まとめて書いています。
私はgroupId
をパッケージIDと同じものにしました。なぜならそれは良い考えだと思うからです。それは...ですか?
最後に、私はartifactId
を選ぶ必要があります、私は現在teatimer
に行きました。しかし、他のMavenプロジェクトを見ると、ハイフンを使用してartifactId
sで単語を分割しています。これはtea-timer
です。 groupId
:com.mycompany.teatimer.tea-timer
に連結すると奇妙に見えます。
どうしますか?
もう一つの例:
パッケージ名:com.mycompany.awesomeinhouseframework
groupId
:com.mycompany.awesomeinhouseframework
(?)
artifactId
:awesome-inhouse-framework
(?)
あなたの慣習は合理的なようです。私がMavenリポジトリであなたのフレームワークを探していたら、私はawesome-inhouse-framework-x.y.jar
グループディレクトリでcom.mycompany.awesomeinhouseframework
を探すでしょう。そして私はそれをあなたの慣習に従ってそこに見つけるでしょう。
2つの簡単な規則が私には役立ちます。
奇妙さは非常に主観的です、私はただ公式の勧告に従うことを勧めます:
groupId、artifactId、およびversionの命名規則のガイド
groupId
はあなたのプロジェクトをすべてのプロジェクトで一意に識別しますので、命名スキーマを強制する必要があります。パッケージ名の規則に従う必要があります。つまり、少なくとも自分が制御するドメイン名と同じでなければならず、必要に応じていくつでもサブグループを作成できます。 パッケージ名に関するさらなる情報を見てください 。例えば。
org.Apache.maven
、org.Apache.commons
GroupIdの粒度を判断するための良い方法は、プロジェクト構造を使用することです。つまり、現在のプロジェクトがマルチモジュールプロジェクトの場合は、親のgroupIdに新しい識別子を追加する必要があります。
例えば。
org.Apache.maven
、org.Apache.maven.plugins
、org.Apache.maven.reporting
artifactId
は、バージョンを除いたjarの名前です。あなたがそれを作成したのであれば、あなたは小文字で奇妙なシンボルなしであなたが望むどんな名前でも選ぶことができます。それがサードパーティ製のjarファイルであれば、配布されているjarファイルの名前を取る必要があります。例えば。
maven
、commons-math
version
配布する場合は、数字とドット(1.0、1.1、1.0.1、...)を含む一般的なバージョンを選択できます。通常、SNAPSHOT(nightly)ビルドに関連付けられているため、日付は使用しないでください。それがサードパーティのアーティファクトである場合、あなたはそれが何であれ、そしてそれが見えることができるのと同じくらい奇妙に彼らのバージョン番号を使わなければなりません。例えば。
2.0
、2.0.1
、1.3.1
基本的な最初の構築に関しては以下を検討してくださいMavenアプリケーション:
groupId
artifactId
version
ただし、 groupId、artifactId、およびversionの命名規則へのガイド の正式な定義には同意できません。これは、groupIdは、ユーザーが制御するドメイン名を逆にして開始する必要があることを示しています。
com
は、このプロジェクトが会社に属していることを意味し、org
は、このプロジェクトが社会組織に属していることを意味します。これらは大丈夫ですが、xxx.tv、xxx.uk、xxx.cnのような奇妙なドメインの場合、groupIdに "tv。"、 "cn。"で始まる名前を付けても意味がありません。groupIdは基本情報を提供する必要があります。ドメインではなくプロジェクトの.