- 同じ groupIdを持つが、異なるアーティファクトIDを持つ2つのメイプルアーティファクト(ローカル)があるとします。
- 異なるアーティファクトIDは、各アーティファクトをユニークにする必要があります。
- ただし、両方のユニークな成果物にそれぞれが同じ名前を持つクラスがある場合。そのクラスはjavaにインポートされるときにgroupId.className形式を使用するため、一意ではありません。 groupIdとclassNameのどちらもユニークではありません。
- これにより、使用するクラスを決定する際のあいまいさが発生します。
- テストすると、pom.xmlファイルで最初に宣言された依存関係が使用されているようです。
質問のベストプラクティスは何を解決している/この問題を回避する?メイク内のアーティファクトIDの一意性
- ですか
- なぜmavenのartifactId座標が、リポジトリ内のmavenアーティファクトの一意性に貢献しますが、Javaコード内ではないのですか?
例コード: Maven - Same Class Name Same GroupId Different ArtifactId
- Project1の最初のアーチファクトです。
- Project2は2番目のアーティファクトです。
- "Projects User"はProject1 & Project2の両方に依存するアーティファクト/プロジェクトです。
- Project1 & Project2のクラス名は
Utilities
です。 - クラス
Utilities
には、現在のプロジェクトのアーティファクト座標とプロジェクト名を含むstring
を返すstaticメソッドpublic static String getDescription()
があります。 Utilities.getDescription()
結果がString
となり、エラーがどこかで発生するかどうかを確認し、解決方法を確認します。- 出力は、「Projects User」成果物のpom.xmlファイルで最初に宣言された依存関係によって異なります。編集
:質問をフォローアップ
- ではなく、手動ですべての 時間をそれを行うために有するのでたartifactIdとのgroupIdの両方を使用してJavaパッケージを作成します原型はありますか?
クラス名com.mypackage 'のようにアクセスされているアーティファクトやgroupIdを – Jens
Javaクラスとは何の関係もありません:
com.github.dibyaranjan.testdummy.MyClass
参照訪問について -
com.github.dibyaranjan.testdummy
クラスは次のようになります。 MyClass'は 'groupId.MyClass'ではありません。同じパッケージと同じクラスのアーティファクトが2つあります。 – NewUser
パッケージ名は一意である必要があります。例えば、あなたがコントロールするドメインや何らかの一意のニックネームなどを使用してから、プロジェクト名を使用する必要があります。 – xenteros