Maven

KATEGORİ

Maven projesinde kullanılan bağımlılıkların “scope” (kapsam) özelliği, belirli bir bağımlılığın hangi bağlamda ve ne zaman kullanılacağını tanımlar. Maven, farklı kapsam değerleriyle bağımlılıkların farklı kullanım senaryolarına uygun olmasını sağlar.

  1. Compile (Derleme):
    • Bu, bağımlılığın projenin derlenmesi (compile) sırasında kullanılacağını belirtir.
    • Compile scope, projenin derleme süreci için gerekli olan bağımlılıkları ifade eder. Bu bağımlılıklar, projenin runtime (çalıştırma) bağlamında da kullanılabilir.
    • Compile kapsamındaki bağımlılıklar, projenin jar dosyasına dahil edilir ve çalışma zamanında kullanılabilir.

Örnek kullanım: Projenin temel çalışma zamanı bağımlılıkları, uygulamanın işlevselliğini desteklemek için kullanılır.

  1. Test:
    • Bu, bağımlılığın yalnızca testlerin derlenmesi ve çalıştırılması sırasında kullanılacağını belirtir.
    • Test scope, yalnızca test aşamasında gereken bağımlılıkları tanımlar ve bu bağımlılıklar proje tarafından runtime’da kullanılmaz.
    • Test kapsamındaki bağımlılıklar, yalnızca test sınıfları veya testler için kullanılır.

Örnek kullanım: Testlerde kullanılan yardımcı araçlar veya kütüphaneler, test kapsamında bağımlılık olarak tanımlanabilir.

3.Provided (Sağlanan):

  • Bu kapsam, bağımlılığın proje tarafından sağlandığını ancak runtime sırasında bağımlılığın sunucu veya ortam tarafından temin edildiğini belirtir.
  • Sağlanan bağımlılıklar, projenin derleme sürecinde kullanılır, ancak projenin çalışma zamanında kendisi tarafından yönetilmez. Genellikle sunucu veya konteyner tarafından sağlanır.
  • Bu, özellikle Java EE (Enterprise Edition) uygulamalarında kullanışlıdır, çünkü uygulama sunucusu tarafından temin edilen API’ler gibi bağımlılıkları ifade etmek için kullanılır.

4. Runtime (Çalışma Zamanı):

  • Bu kapsam, bağımlılığın projenin derleme aşamasında kullanılmayacağını, ancak çalışma zamanında projeye dahil edileceğini belirtir.
  • Runtime bağımlılıkları, projenin derleme sırasında kullanılmaz, ancak çalışma zamanında projeye eklenir. Bu, projenin çalışma zamanında belirli bir bağımlılığa ihtiyaç duyduğu senaryolarda kullanılır.
  • Örneğin, projenin farklı sürümlerine ihtiyaç duyulan bir veritabanı sürücüsü, runtime kapsamında eklenir.

5. System (Sistem):

  • Bu kapsam, belirli bir sistem yolundan bir JAR dosyasını projeye dahil etmek için kullanılır.
  • System bağımlılıkları, proje tarafından yönetilmez ve belirli bir dosya yoluna işaret eder. Bu kapsam, genellikle projenin yerel geliştirme ortamında geliştirme sırasında kullanılır, ancak projenin başkaları tarafından kullanılması için uygun değildir.