3.Bölüm: Gradle ile İlk Java Projesinin Oluşturulması

Anıl Emre Özçelik
3 min readNov 7, 2019

--

Merhaba arkadaşlar.Bu bölümde Gradle’ın Java projelerinde nasıl kullanılacağını,projenizi nasıl build edeceğinizi inceleyeceğiz.Amacım Gradle hakkında konuşmak olduğu için Java Projesini basit tutacağım ve Gradle scriptlerine yoğunlaşacağım.

Hatırlayacak olursak önceki bölümde kullanacağımız veya işimize yarayacak olan bütün taskları kendimizin yazmak zorunda olmadığından bahsetmiştik.Hali hazırda yazılmış olan taskları içeren pluginlerin olduğunu söylemiştik.Burada plugin dediğimiz şey,bizim Gradle ile yapabileceğimiz şeylerin kapasitesini artıran yani bize yeni hizmetler sunan bir mekanizma.

Biz de bu pluginlere yoğunlaşacağız.

Java Plugin

Eğer bir Java projesi geliştiriyorsanız Gradle’a bunu söylemek için build.gradle içerisine java pluginini eklemeniz gerekir.Böylece bu plugin size Java projelerine özel bazı yetenekler sağlar.Peki bir plugini Gradle projesine nasıl ekleyebiliriz?

apply plugin: <plugin-name>

Bizim örneğimize göre şu şekilde olacak:

apply plugin: ‘java’

Bunu yaptığımızda geçen bölümde görmüş olduğumuz tasklara ek olarak Java projelerine özel yeni tasklar geldi:clean,assemble,test vb.

gradle tasks

yazarak bunları kontrol edebiliriz.

Java pluginini projemize ekledik ve bize kazandırdığı bazı taskları da gördük.Bu taskları da kendimizin oluşturduğu tasklar gibi çağırabilir,çalıştırabiliriz.

gradle assemble

Bu taskı çalıştırdığımızda proje dizinin altında build dizini ve bunun altındaki libs klasörünün içerisine projemizin jar dosyası oluşacak.

build.gradle dosyamızı aşağıdaki gibi düzenleyelim;

apply plugin: ‘java’
archivesBaseName = “my-first-project”
version = ‘1.0-SNAPSHOT’

Bu durumda oluşacak jar’ın isminin formatı archivesBaseName-version.jar şeklinde olur.Yani my-first-project-1.0-SNAPSHOT.jar

Dependency

Öncelikle aşağıdaki kodu inceleyelim.Gördüğünüz gibi son derece basit bir kod.Fakat biz bu projede gradle assemble komutunu çalıştırırsak hata alırız.Çünkü toString() metodu içerisindeki kod parçası 3rd party kütüphaneye ihtiyaç duyuyor.Bu yüzden hata almamak için bu kütüphaneyi projeye dahil etmemiz lazım.

import org.apache.commons.lang3.builder.ToStringBuilder;

public class MyProject {

private int id;
private String name;
private String surname;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public String toString() {
return ToStringBuilder.reflectionToString(this);
}


}

Peki kodumuzun içerisinde 3rd party kütüphane kullandığımızda bu kütüphaneyi nasıl tanımlayacağız?

Bunun için build.gradle dosyası içerisine aşağıdaki gibi bir bölüm ekleyeceğiz.

dependencies {
compile group: ‘org.apache.commons’, name: ‘commons-lang3’,version: ‘3.4’
}

Bir dependency tanımlanırken 3 kısımdan oluşuyor: group,name,version

Bu mavendaki groupId,artifactId,version yapısına benziyor.

Dependency tanımımızı yaptık.Fakat bunun hangi repository’den çekilmesi gerektiğini belirtmedik.Bunun için bir de repository tanımı yapmamız gerekiyor.Bunun için birçok seçeneğiniz mevcut.İsterseniz kendi remote repository tanımınızı yapabilir,ister mavenCentral() repository’sini kullanabilir,isterseniz de local repository üzerinden bağımlılıkları çekebilirsiniz.Bunların dışında da seçenekler mevcut.

repositories {
mavenCentral()
}

Siz bu tanımı yaptığınızda projeniz eğer bir jar’a ihtiyaç duyuyorsa bunun için ilk önce local cache’e bakar eğer orada bulamazsa maven’ın kendi repository’sine bakacak.

Dependency tanımı yaparken uyulması gereken belli kurallar var.

  • Her dependency ayrı ayrı tanımlanmalıdır.
  • group,name,version üçlüsünden önce configuration tipi yazılmalıdır.(compile,testCompile vb.)
  • Ayrıca dependency’lerinizi aşağıdaki gibi kısa bir şekilde de tanımlayabilirsiniz.
dependencies{
compile ‘org.apache.commons:commons-lang3:3.4’
}

Diyelim ki projemizin unit testlerini çalıştırmak istiyoruz ve bunun için JUnit kütüphanesine ihtiyaç duyuyoruz.O zaman aşağıdaki gibi dependency tanımı yapmamız lazım.Burada değinmek istediğim 2 nokta var.İlki bu sefer compile yerine testCompile yazdık.Bu konfigürasyon tipi test sınıflarımızla ilgili bir bağımlılık tanımlayacağımızda kullanılır.İkinci nokta ise versiyon numarasını belirtirken 4.+ yazmamız.Bunun anlamı da 4 ile başlayan son versiyonu getir demektir.

apply plugin: ‘java’
archivesBaseName = “my-first-project”
version = ‘1.0-SNAPSHOT’
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

Bu bölümü de böylece noktalamış olduk.Umarım faydalı olmuştur.Aklınıza takılanları sorarsanız elimden geldiğince hızlı cevap vermeye çalışırım.İyi günler.

--

--