8

私は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>

「repo」フォルダーにいくつかの jar をデプロイしましたが、それらを pom.xml の依存関係として追加すると解決されません。Maven は、共有リポジトリとリモート リポジトリのみを参照します。「repo」の内容を共有の「m2repo」にコピーすると動きます。何か不足していますか、それともこのセットアップはまったく不可能ですか?

4

2 に答える 2

7

可能ではありますが、個人的には、それを行うのは良い習慣ではないと思います。使い方によっては、この投稿が役に立ちます: http://blog.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea . また、再現可能で移植可能なプロジェクトも必要です。この質問では、この関連トピックについて説明します。移植性のためだけに、これらの jar を VCS にチェックインしないでください。

それでもよろしければお手伝いします。モデルを機能させるには、「リポジトリ フォルダー」がここで定義されている構造に従う必要があります。

「レポ フォルダー」はローカル ファイル構造ですが、Maven はそれをリモート リポジトリであるかのように扱います (Maven Central と同様)。つまり、プロジェクトをビルドするときはいつでも、Maven は "repo フォルダー" から .m2 リポジトリーにも jar をダウンロードしようとします。

ダウンロード中: file:/j/my-project/my-local-repo/com/google/guava/guava/14.0.1/guava-14.0.1.pom
ダウンロード済み: file:/j/my-project/my-local -repo/com/google/guava/guava/14.0.1/guava-14.0.1.pom (276.3 KB/秒で 6 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 (10.4 KB/秒で 2 KB)

グアバ jar はdownloaded、「レポ フォルダー」から利用できるため、「レポ フォルダー」から .m2 リポジトリに移動することがわかります。

于 2013-07-13T01:56:22.537 に答える
5

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

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

外部リポジトリのみに変更しました:

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

これで、成果物が「プロジェクト」リポジトリに見つかりました。ただし、Maven は予想とは異なる動作をします。ceilfors が書いているように、ファイルシステム リポジトリはリモート リポジトリと同じように扱われます。アーティファクトはそこからローカル リポジトリにコピーされるため、ローカル リポジトリと他のファイル システム リポジトリの間で jar が重複します。したがって、設定が理想的ではないことがわかります。ただし、私の場合は、プロジェクトをマベナイズする最も手っ取り早い方法だと思います。

于 2013-07-13T08:18:47.393 に答える