Gradle Nedir?

Gradle bir inşa aracıdır (build tool), ancak buna yazılımınızı tanımlamak veya modellemek için bir araç olarak da bakabilirsiniz. Yani Gradle, yazılım projenizin nasıl yapılandırıldığını açıklamak için bir dil, yani alanına özgü dil (“domain-specific language” (DSL)) sunar. Örneğin, Java ile yazılmış, birden fazla Java kütüphanesinden veya bileşeninden oluşan bir uygulama düşünebilirsiniz. Gradle’ın DSL’sinde bir kez tanımlama (description) yaptıktan sonra, bu model, yazılımı geliştirmenize ve son uygulamayı elde etmek için yazılımı oluşturmanıza yardımcı olacak araçlarla yorumlanabilir.

“Bu tanımlama” ifadesi, Gradle DSL’i kullanılarak yapılan yazılım projesinin yapısal tanımını kastetmektedir. Yani, projenin içindeki bileşenlerin (örneğin Java kütüphaneleri veya modüller) nasıl organize edildiği, hangi bağımlılıkların kullanıldığı, nasıl inşa edileceği (build), test edileceği ve dağıtılacağı gibi yapılandırmaların Gradle DSL’inde tanımlanması. Bu tanımlama, projenin tüm yapısını modelleyip Gradle ve diğer araçlar tarafından yorumlanabilecek hale getirir.

Bu araçlar (tools), uygulamayı oluşturabilen veya uygulama için testler çalıştırabilen ve geliştirme (development) ve dağıtım hattınızdaki (deployment pipeline) diğer otomasyon görevlerini gerçekleştirebilen Gradle’ın kendisidir.

Ancak IDE gibi diğer araçlar da bu modeli okuyabilir. Örneğin IntelliJ IDEA, projenizi açıklayan modeli okumak için Gradle’ı kullanabilir ve ardından projeyi IDE’de yapılandırılmış bir şekilde size gösterebilir ve size, farklı projelerin sınıfları arasında gezinme (navigating) gibi ek araç desteği verebilir. Bu nedenle Gradle’a öncelikle yazılım projenizin yapısını tanımlayan bir araç olarak bakmak ve bunu Gradle’ın sunduğu DSL ile nasıl yapacağınızı öğrenmek yararlı olacaktır.

Gradle’ın DSL’i aslında bir Java API‘sidir, dolayısıyla Kotlin, Groovy veya Java’nın kendisi gibi herhangi bir JVM tabanlı dil, potansiyel olarak bir yazılım projesini Gradle terimleriyle tanımlamak için kullanılabilir. Bunu kolaylaştırmak için Gradle, DSL’ninin bir Kotlin sürümünü ve bir Groovy sürümünü sunmaktadır. Bu, temel olarak, Gradle’a özgü yapılar dışında, Kotlin veya Groovy dilinin herhangi bir özelliğini kullanarak Gradle’ı genişletebilir veya özelleştirebilirsiniz anlamına gelir. Bu güçlü bir özellik olsa da, bazı durumlarda zararlı olabilir. Çünkü, bir programlama dilinin tüm gücü kullanılabilir olduğunda, projenin yapısını zor anlaşılır hale getiren veya Gradle’ın önbellek veya artımlı derleme (incremental building) işlevselliğini bozan şeyler yapabilirsiniz. Bu yüzden bu içeriklerde, çoğunlukla Gradle’a özgü notasyonlara sadık kalacağız ve Gradle dünyasından çıkmanızı gerektirmeyen en iyi uygulamaları göstereceğiz.