Pertanyaan Haruskah saya menulis repositori di pom.xml saya?


Saya baru mengenal Maven. Jika saya memulai proyek baru dengan Maven, haruskah saya mengetahui URL repositori agar berfungsi?

Sebagai contoh, tutorial Hibernate ini http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html mengatakan tentang cara membuat proyek sampel dengan teks pom.xml. Tetapi pom.xml ini tidak mengandung repositori apa pun.

Jadi, plugin m2eclipse saya mengatakan, misalnya Project build error: 'dependencies.dependency.version' for org.hibernate:hibernate-core:jar is missing., untuk semua tag dependensi di pom.xml

Apakah ini karena tidak adanya repositori?

Di mana tahu URL repositori? Apakah ada satu repositori besar? Mengapa tidak dimasukkan secara default?

PERBARUI 1 Dikatakan di sini, bahwa Maven harus menggunakan "pusat" repositori secara default: http://maven.apache.org/guides/introduction/introduction-to-repositories.html

Saya telah mencari di sana untuk artefak kode hibernate dan menemukannya. Jadi, IS artefak ini di repositori pusat. Menurut maven saya mengatakan ketergantungan tidak ditemukan. Oleh karena itu tidak menggunakan pusat repositori. Mengapa?


9
2018-01-19 19:58


asal


Jawaban:


Rupanya ketergantungan Hibernate Anda hilang <version> menandai:

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

Perhatikan bahwa Anda tidak perlu menentukan versi dependensi yang sebelumnya telah dideklarasikan <dependencyManagement>.

Jawaban lama:

Setiap skrip build (tidak hanya dengan Maven) harus dapat direproduksi dan independen dari lingkungan. Pom.xml standar (bernama super pom), yang setiap pom.xml mewarisi dari, sudah mendefinisikan pusat repositori utama 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>

Anda tidak harus mendefinisikan repositori ini dan Anda tidak perlu menentukan yang lain jika semua dependensi Anda ada di sana. Di sisi lain jika Anda menggunakan beberapa repositori eksternal, Anda harus tambahkan mereka ke pom.xml, sehingga setiap pengembang selalu dapat membangun.

Intinya adalah: jika Anda dapat membangun proyek memiliki repositori yang benar-benar kosong, Anda pom.xml baik-baik saja.


16
2018-01-19 20:04



Tidak disarankan untuk menentukan repositori dalam file POM karena itu menyebabkan banyak masalah (Maven akan mencari repositori untuk artefak APAPUN yang bahkan tersedia di Pusat, portabilitas yang buruk, ...)

Pendekatan terbaik: Siapkan pengelola repositori (Artifactory, Nexus) dan edit file settings.xml Anda untuk menggunakan pengelola repo sebagai cermin.

Pendekatan kedua terbaik: Tentukan repositori yang diperlukan dalam file settings.xml Anda, bukan di file pom.xml Anda.

Repositori dalam pom adalah ide yang buruk.


1
2017-09-04 13:27