Gradle'da derleme ve çalışma zamanı yapılandırmaları arasındaki fark


102

Sorum biraz yaygın ama Gradle ile bağlantılı.

Neden derleme ve çalışma zamanı yapılandırmasına ihtiyacımız var?

Bir şeyi derlediğimde, java sınıflarımı bayt koduna dönüştürmek için yapılara ihtiyacım var, bu nedenle derleme yapılandırmasına ihtiyacım var, ancak neden çalışma zamanı yapılandırması gerekiyor, uygulamamı JVM'de çalıştırmak için neden başka bir şeye ihtiyacım var?

Aptalca geliyorsa kusura bakma ama anlamıyorum.

Yanıtlar:


149

En yaygın durumda, derleme zamanında ihtiyaç duyulan yapılar, çalışma zamanında ihtiyaç duyulanların bir alt kümesidir. Örneğin, bir programın appkitaplığı kullandığını foove kitaplığın foo dahili olarak kitaplığı kullandığını varsayalım bar. O zaman sadece fooderlemek için gereklidir app, ancak her ikisi de foove baronu çalıştırmak için gereklidir. Bu nedenle, varsayılan olarak, Gradle'ın compileyapılandırmasına koyduğunuz her şey yapılandırmasında da görünür runtime, ancak bunun tersi doğru değildir.


20
Yazık ki gradle.org/docs/current/userguide/dependency_management.html'de bundan açıkça bahsedilmiyor . Hem derlemeyi hem de çalışma zamanını anlamlarını açıkça belirtmeden kullanıyorlar ...
silasdavis

2
@silasdavis Dokümantasyonda farkı açıklıyor: gradle.org/docs/current/userguide/… 8.3. Bağımlılık yapılandırmaları
angelcervera

@angelcervera Ah öyle yapar, 8. Bağımlılık Yönetimi Temelleri ve 51. Bağımlılık Yönetimi. Neden iki bölümleri olduğunu anlayabiliyorum, ancak ikincisi birincisine atıfta bulunsaydı belki güzel olurdu. Sanırım 51'e indim ve tam bir hesap vermesini bekledim.
silasdavis

@silasdavis True. Belgelerdeki diğer bölümler için de aynı. A'dan Z'ye tüm belgeleri okumak için aynı boş zamanımı
almalıyım

1
@Peter Niederwieser Derleme görevi çalışma zamanı ile aynı bağımlılıkları gösteriyorsa, derleme yerine hangi senaryoda çalışma zamanını kullanırsınız?
rj2700
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.