私はMavenを初めて使用します。次の設定を使用したいと思います。
1)パブリックアーティファクトをダウンロードするためのリモートリポジトリ
2)ダウンロードしたアーティファクトの共有ローカルリポジトリ。以下をsettings.xmlに追加することでうまく機能します。
<localRepository>C:/m2repo</localRepository>
3)今度は、昔ながらの「lib」フォルダーのように、単一のプロジェクトから参照されるアーティファクトのリポジトリも必要です。
そこで、プロジェクトのpom.xmlに以下を追加しました。
<repository>
<id>repo</id>
<name>repo</name>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<url>${project.baseUri}repo</url>
</repository>
いくつかのjarを「repo」フォルダーにデプロイしましたが、pom.xmlに依存関係として追加すると、解決されません。 Mavenは、共有リポジトリとリモートリポジトリのみを参照します。 「repo」の内容を共有の「m2repo」にコピーすると動作します。私は何かが足りないのですか、それともこのセットアップはまったく不可能ですか?
私の問題の原因は、settings.xmlのリポジトリのミラーリングでした。ミラーリングは、すべてのリポジトリに設定されています。
<mirror>
<mirrorOf>*</mirrorOf>
</mirror>
これを外部リポジトリのみに変更しました。
<mirror>
<mirrorOf>external:*</mirrorOf>
</mirror>
これで、私のアーティファクトは「プロジェクト」リポジトリにあります。ただし、Mavenの動作は予想とは異なり、ceilforsが書き込むように、ファイルシステムリポジトリはリモートリポジトリと同じように扱われます。アーティファクトはそこからローカルリポジトリにコピーされるため、ローカルリポジトリと他のファイルシステムリポジトリ間でjarが重複します。ですから、この設定は理想的ではないと思います。しかし、私の場合でも、プロジェクトを実現するための最も迅速な方法だと思います。
可能ではありますが、個人的にはnotは、そうすることをお勧めします。使用法に応じて、この投稿は役に立ちます: http://blog.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea 。また、再現可能で移植性のあるプロジェクトが必要です。 この質問 この関連トピックについて説明します。移植性のためだけに、これらのjarファイルをVCSにチェックインしないでください。
あなたがまだ主張するならば、私は助けようとします。モデルを機能させるには、「リポジトリフォルダ」が定義された構造に従う必要があります ここ 。
「リポジトリフォルダー」はローカルファイル構造ですが、Mavenは、Maven Centralと同様に、リモートリポジトリであるかのように扱います。つまり、プロジェクトをビルドするときはいつでも、Mavenはjarファイルを「repoフォルダー」から.m2リポジトリーにもダウンロードしようとします。
ダウンロード:ファイル:/j/my-project/my-local-repo/com/google/guava/guava/14.0.1/guava-14.0.1.pom
ダウンロード:ファイル:/j/my-project/my-local-repo/com/google/guava/guava/14.0.1/guava-14.0.1.pom(6 KB、276.3 KB /秒)
ダウンロード: http://repo.maven.Apache.org/maven2/com/google/google/1/google-1.pom
ダウンロード: http://repo.maven.Apache.org/maven2/com/google/google/1/google-1.pom (2 KB、10.4 KB /秒)
Guava jarは、「repoフォルダー」から利用できるため、「repoフォルダー」から.m2リポジトリまでdownloaded
になることがわかります。