web-dev-qa-db-ja.com

pom.xmlにリポジトリを作成する必要がありますか?

私はMavenを初めて使用します。 Mavenで新しいプロジェクトを開始する場合、それが機能するためのリポジトリURLを知っている必要がありますか?

たとえば、このHibernateチュートリアル http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html は、pom.xmlでサンプルプロジェクトを作成する方法について説明していますテキスト。ただし、このpom.xmlにはリポジトリが含まれていません。

したがって、私のm2Eclipseプラグインは、たとえばProject build error: 'dependencies.dependency.version' for org.hibernate:hibernate-core:jar is missing.、pom.xmlのすべての依存タグ

これは、リポジトリがないためですか?

リポジトリURLはどこで確認できますか?大きなリポジトリはありますか?デフォルトで含まれていないのはなぜですか?

UPDATE 1ここで、Mavenはデフォルトで「central」リポジトリを使用する必要があるとしています: http://maven.Apache.org/ guides/introduction/introduction-to-repositories.html

そこでhibernate-codeアーティファクトを検索したところ、見つかりました。したがって、このアーティファクトはIS中央リポジトリにあります。依存関係が見つからないという私のmavenによると、中央リポジトリを使用しないのはなぜですか?

12
Dims

どうやらHibernate依存関係に<version>タグがありません:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.6.9.Final</version> <!-- this line is missing -->
</dependency>

以前に <dependencyManagement> で宣言された依存関係のバージョンを指定する必要がないことに注意してください。

古い答え:

すべてのビルドスクリプト(Mavenだけでなく)は再現可能で、環境から独立している必要があります。 Standard pom.xml ((super pomと呼ばれます))は、すべてのpom.xmlから継承され、メインのMavenセントラルをすでに定義していますリポジトリ:

<repositories>
  <repository>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <layout>default</layout>
    <url>http://repo1.maven.org/maven2</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

すべての依存関係がそこにある場合、このリポジトリを定義する必要はなく、他のリポジトリを定義する必要もありません。一方、外部リポジトリを使用している場合は、mustそれらをpom.xmlに追加して、すべての開発者が常にビルドできるようにする必要があります。

つまり、完全に空のリポジトリを持つプロジェクトをビルドできれば、pom.xmlで問題ありません。

17

多くの問題が発生するため、POMファイルでリポジトリを定義することはお勧めできません(Mavenは、Centralで利用可能なものでも移植性が低いなど、あらゆるアーティファクトを検索します...)

最善の方法:リポジトリマネージャー(Artifactory、Nexus)をセットアップし、settings.xmlファイルを編集して、リポジトリマネージャーをミラーとして使用します。

2番目のベストアプローチ:必要なリポジトリを、pom.xmlファイルではなく、settings.xmlファイルで定義します。

pomsのリポジトリはお勧めできません。

2