Maven - Depolar

Maven Deposu nedir?

Maven terminolojisinde bir depo, tüm proje kavanozlarının, kitaplık kavanozlarının, eklentilerin veya diğer projeye özgü eserlerin saklandığı ve Maven tarafından kolayca kullanılabileceği bir dizindir.

Maven deposu üç türdendir. Aşağıdaki çizim bu üç tip hakkında bir fikir verecektir.

  • local
  • central
  • remote

Yerel Depo

Maven yerel deposu, makinenizdeki bir klasör konumudur. Herhangi bir maven komutunu ilk kez çalıştırdığınızda oluşturulur.

Maven yerel deposu, projenizin tüm bağımlılıklarını (kitaplık kavanozları, eklenti kavanozları vb.) Korur. Bir Maven derlemesi çalıştırdığınızda, Maven tüm bağımlılık kavanozlarını otomatik olarak yerel depoya indirir. Bir proje her oluşturulduğunda uzak makinede depolanan bağımlılıklara başvurulardan kaçınmaya yardımcı olur.

Maven yerel deposu varsayılan olarak Maven tarafından% USER_HOME% dizininde oluşturulur. Varsayılan konumu geçersiz kılmak için,% M2_HOME% \ conf dizininde bulunan Maven settings.xml dosyasında başka bir yoldan bahsedin.

<settings xmlns = "http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <localRepository>C:/MyLocalRepository</localRepository>
</settings>

Maven komutunu çalıştırdığınızda, Maven bağımlılıkları özel yolunuza indirecektir.

Merkez depo

Maven merkezi deposu, Maven topluluğu tarafından sağlanan depodur. Yaygın olarak kullanılan çok sayıda kitaplık içerir.

Maven yerel depoda herhangi bir bağımlılık bulamadığında, aşağıdaki URL'yi kullanarak merkezi depoda aramaya başlar - https://repo1.maven.org/maven2/

Merkezi deponun temel kavramları aşağıdaki gibidir -

  • Bu depo, Maven topluluğu tarafından yönetilmektedir.
  • Yapılandırılması gerekli değildir.
  • İnternet erişiminin aranmasını gerektirir.

Merkezi maven deposunun içeriğine göz atmak için, maven topluluğu bir URL sağladı - https://search.maven.org/#browse. Bu kitaplığı kullanarak bir geliştirici, merkezi depodaki tüm mevcut kitaplıkları arayabilir.

Uzak Depo

Bazen Maven, merkezi depoda da belirtilen bir bağımlılık bulamaz. Daha sonra, derleme sürecini durdurur ve hata mesajını konsola verir. Böyle bir durumu önlemek için Maven,Remote Repository, geliştiricinin gerekli kitaplıkları veya diğer proje kavanozlarını içeren kendi özel deposu.

Örneğin, aşağıda belirtilen POM.xml'yi kullanarak Maven, aynı pom.xml'de belirtilen Uzak Depolardan bağımlılığı (merkezi depoda mevcut değildir) indirecektir.

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Maven Bağımlılık Arama Sırası

Maven derleme komutlarını çalıştırdığımızda, Maven aşağıdaki sırayla bağımlılık kitaplıklarını aramaya başlar -

  • Step 1 - Yerel depoda arama bağımlılığı bulunamazsa, 2. adıma geçin, aksi takdirde daha fazla işlem gerçekleştirin.

  • Step 2 - Merkezi depodaki arama bağımlılığı, bulunamazsa ve uzak depodan / depolardan bahsedilirse, sonra 4. adıma geçin. Aksi takdirde, ileride başvurmak üzere yerel depoya indirilir.

  • Step 3 - Uzak bir depodan bahsedilmediyse, Maven işlemi durdurur ve hata verir (Bağımlılık bulunamıyor).

  • Step 4- Uzak depoda veya havuzlarda arama bağımlılığı, bulunursa, ileride başvurmak üzere yerel depoya indirilir. Aksi takdirde, Maven işlemeyi durdurur ve hata verir (Bağımlılık bulunamıyor).