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.
- 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.
- 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.