Anda hanya dapat mengimpor dependensi terkelola . Ini berarti Anda hanya dapat mengimpor POM lain ke dependencyManagement
bagian POM proyek Anda. yaitu
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>other.pom.group.id</groupId>
<artifactId>other-pom-artifact-id</artifactId>
<version>SNAPSHOT</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
...
Apa yang kemudian terjadi adalah bahwa semua dependensi yang ditentukan di dependencyManagement
bagian other-pom-artifact-id
ini disertakan di dependencyManagement
bagian POM Anda . Anda kemudian dapat merujuk dependensi ini di dependency
bagian POM Anda (dan semua POM turunannya) tanpa harus menyertakan version
dll.
Namun jika di POM Anda, Anda cukup menentukan dependensi normal ke other-pom-artifact-id
semua dependencies
dari dependency
bagian other-pom-artifact-id
tersebut dimasukkan secara transitif dalam proyek Anda - namun dependensi yang ditentukan di dependencyManagement
bagian other-pom-artifact-id
tersebut tidak disertakan sama sekali.
Jadi pada dasarnya dua mekanisme berbeda digunakan untuk mengimpor / termasuk dua jenis dependensi yang berbeda (dependensi terkelola dan dependensi normal).
Ada halaman bagus di situs web maven, yang dapat menjelaskan hal ini jauh lebih baik daripada yang saya bisa, Manajemen Ketergantungan di Maven dan juga berisi informasi khusus tentang mengimpor ketergantungan .
pom
A di adalah induk daripom
B, dapatkah Anda menempatkan B dalam manajemen ketergantungan proyek A dengan cakupanimport
?... <dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>pomlib-lib</artifactId> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>pomlib-war</artifactId> <type>war</type> </dependency> </dependencies> </project>
KERING dan Perang KurusAnda tidak dapat memiliki
pom
proyek tipe sebagaisimple dependency
proyek lain. (Ya, Anda bisa - tetapi itu tidak akan berguna). Hanya adaparent-child
hubungan. Ini pada dasarnyamanaging dependency through inheritance
.import
lingkup untukpom
ketergantungan tipe di<dependencyManagement>
bagian memungkinkan Anda mencapai yang setara denganmultiple inheritance
.Anda dapat memiliki perbedaan
poms
- masing-masingmanaging
sekelompok dependensi terkait. Proyek yang menggunakan ini dapatimport
inipoms
dan kemudian menentukan dependensi yang mereka butuhkan tanpa perlu khawatir tentang versinya. Ini pada dasarnya adalahbill of materials
konsep, yang diilustrasikan dalam tautan yang ditentukan oleh @ DB5.Ini membantu menjaga
parent poms
proyek multi-modul yang kompleks agar tidak terlalu besar dan berat.sumber
Dua konsep, sangat mirip dengan paradigma pemrograman berorientasi objek, akan membantu menjawab pertanyaan:
Bagian dependencyManagement hanya mendeklarasikan dependensi dan detailnya dalam project saat ini - tujuannya adalah mengelola detail dan digunakan kembali di project lain, baik melalui pewarisan ( induk ) atau impor ( cakupan ). Ini seperti mendeklarasikan tipe data dalam program dan membuatnya tersedia untuk digunakan.
Bagian ketergantungan mendefinisikan penggunaan sebenarnya dari ketergantungan dalam proyek, secara opsional mewarisi detail (yaitu, versi, dll.) Dari ketergantungan yang dideklarasikan di bawah dependencyManagment . Itulah mengapa Anda akan kehilangan dependensi jika Anda hanya meletakkannya di dependencyManagment . Ini analog dengan membuat instance variabel dari tipe data dalam program yang membutuhkannya.
sumber