web-dev-qa-db-ja.com

settings.xmlとpom.xmlのMavenローカルリポジトリ

私は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」にコピーすると動作します。私は何かが足りないのですか、それともこのセットアップはまったく不可能ですか?

7
j_maly

私の問題の原因は、settings.xmlのリポジトリのミラーリングでした。ミラーリングは、すべてのリポジトリに設定されています。

<mirror>
  <mirrorOf>*</mirrorOf>
</mirror>

これを外部リポジトリのみに変更しました。

<mirror>   
  <mirrorOf>external:*</mirrorOf> 
</mirror>

これで、私のアーティファクトは「プロジェクト」リポジトリにあります。ただし、Mavenの動作は予想とは異なり、ceilforsが書き込むように、ファイルシステムリポジトリはリモートリポジトリと同じように扱われます。アーティファクトはそこからローカルリポジトリにコピーされるため、ローカルリポジトリと他のファイルシステムリポジトリ間でjarが重複します。ですから、この設定は理想的ではないと思います。しかし、私の場合でも、プロジェクトを実現するための最も迅速な方法だと思います。

5
j_maly

可能ではありますが、個人的には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になることがわかります。

6
ceilfors