Gradle - Komut Dosyası Oluştur
Gradle, iki şeyi ele almak için bir betik dosyası oluşturur; Biriprojects ve diğeri tasks. Her Gradle yapısı bir veya daha fazla projeyi temsil eder. Bir proje, bir kitaplık JAR'ı veya bir web uygulamasını temsil eder veya diğer projeler tarafından üretilen JAR'lardan birleştirilmiş bir ZIP'i temsil edebilir. Basit bir deyişle, bir proje farklı görevlerden oluşur. Görev, bir yapının gerçekleştirdiği bir iş anlamına gelir. Bir görev, bazı sınıfları derliyor, bir JAR oluşturuyor, Javadoc oluşturuyor veya bazı arşivleri bir depoda yayınlıyor olabilir.
Gradle kullanır Groovy language senaryo yazmak için.
Derleme Komut Dosyası Yazma
Gradle, yapıları açıklamak için bir Etki Alanına Özgü Dil (DSL) sağlar. Bu, bir yapıyı tanımlamayı kolaylaştırmak için Groovy dilini kullanır. Gradle'ın her derleme komut dosyası UTF-8 kullanılarak kodlanır, çevrimdışı kaydedilir ve build.gradle olarak adlandırılır.
build.gradle
Groovy betiği kullanarak görevleri ve projeleri açıklıyoruz. Gradle komutunu kullanarak bir Gradle derlemesi çalıştırabilirsiniz. Bu komut adında bir dosya ararbuild.gradle. Aşağıdaki örneğe bir göz atın.tutorialspoint. Aşağıdaki komut dosyasını kopyalayıp adlı bir dosyaya kaydedin.build.gradle. Bu derleme betiği, tutorialspoint dizesini yazdırmak için kullanılan bir görev adı olan merhaba tanımlar.
task hello {
doLast {
println 'tutorialspoint'
}
}
Komut isteminde aşağıdaki komutu yürütün. Yukarıdaki betiği çalıştırır. Bunu build.gradle dosyasının depolandığı yerde yürütmelisiniz.
C:\> gradle –q hello
Çıktı:
tutorialspoint
Görevin ANT'nin hedefine benzer şekilde çalıştığını düşünüyorsanız, bu doğru - Gradle görevi ANT hedefine eşdeğerdir.
Bir kısayol belirterek bu merhaba görevini basitleştirebilirsiniz (bir <<) için doLastBeyan. Bu kısayolu yukarıdaki göreve eklersenizhello aşağıdaki komut dosyası gibi görünecektir.
task hello << {
println 'tutorialspoint'
}
Yukarıda olduğu gibi, yukarıdaki komut dosyasını kullanarak çalıştırabilirsiniz. gradle –q hello komut.
Grade komut dosyası esas olarak iki gerçek Nesne kullanır, biri Proje Nesnesi ve diğeri Komut Dosyası Nesnesidir.
Project Object- Her komut dosyası bir veya birden çok projeyi açıklar. Yürütme sırasında bu komut dosyaları Proje Nesnesini yapılandırır. Yapı betiğinizde Proje Nesnesine temsil edilen bazı yöntemleri çağırabilir ve özelliği kullanabilirsiniz.
Script Object- Gradle, Script Arayüzünü uygulayan ve ardından çalıştıran sınıflara kod kodunu aldı. Bu, komut dosyası arabirimi tarafından bildirilen tüm özelliklerin ve yöntemlerin komut dosyanızda mevcut olduğu anlamına gelir.
Aşağıdaki tablo şu listeyi tanımlar standard project properties. Tüm bu özellikler, derleme komut dosyanızda mevcuttur.
Sr. No. | İsim | Tür | Varsayılan değer |
---|---|---|---|
1 | proje | Proje | Proje örneği |
2 | isim | Dize | Proje dizininin adı. |
3 | yol | Dize | Projenin mutlak yolu. |
4 | açıklama | Dize | Proje için bir açıklama. |
5 | projeDir | Dosya | Derleme komut dosyasını içeren dizin. |
6 | buildDir | Dosya | projectDir / inşa |
7 | grup | Nesne | Belirtilmemiş |
8 | versiyon | Nesne | Belirtilmemiş |
9 | karınca | AntBuilder | AntBuilder örneği |
Harika Temeller
Gradle derleme komut dosyaları tam uzunlukta Groovy API'sini kullanır. Başlangıç olarak aşağıdaki örneklere bir göz atın.
Aşağıdaki örnek, bir dizeyi büyük harfe dönüştürmeyi açıklamaktadır.
Aşağıdaki kodu kopyalayın ve şuraya kaydedin: build.gradle dosya.
task upper << {
String expString = 'TUTORIALS point'
println "Original: " + expString
println "Upper case: " + expString.toUpperCase()
}
Komut isteminde aşağıdaki komutu yürütün. Yukarıda verilen betiği çalıştırır. Bunu build.gradle dosyasının depolandığı yerde yürütmelisiniz.
C:\> gradle –q upper
Çıktı:
Original: TUTORIALS point
Upper case: TUTORIALS POINT
Aşağıdaki örnek, örtük bir parametrenin ($ it) değerini 4 kez yazdırmayı açıklar.
Aşağıdaki kodu kopyalayıp şuraya kaydedin: build.gradle dosya.
task count << {
4.times {
print "$it "
}
}
Komut isteminde aşağıdaki komutu yürütün. Yukarıda verilen betiği çalıştırır. Bunu build.gradle dosyasının depolandığı yerde yürütmelisiniz.
$ gradle –q count
Çıktı:
0 1 2 3
Groovy dili, aşağıda tartışılan bazı önemli özelliklerde birçok özellik sağlar.
Groovy JDK Yöntemleri
Groovy, standart Java sınıflarına birçok yararlı yöntem ekler. Örneğin, JDK'nın yinelenebilir API'si bireach() Yinelenebilir Arabirimin öğeleri üzerinde yinelenen yöntem.
Aşağıdaki kodu kopyalayıp şuraya kaydedin: build.gradle dosya.
task groovyJDK << {
String myName = "Marc";
myName.each() {
println "${it}"
};
}
Komut isteminde aşağıdaki komutu yürütün. Yukarıda verilen betiği çalıştırır. Bunu, build.gradle dosyasının depolandığı yerde yürütmelisiniz.
C:\> gradle –q groovyJDK
Çıktı:
M
a
r
c
Emlak Erişimcileri
Referansını belirterek belirli bir özelliğin uygun alıcı ve ayarlayıcı yöntemlerine otomatik olarak erişebilirsiniz.
Aşağıdaki kod parçası, bir özelliğin alıcı ve ayarlayıcı yöntemlerinin sözdizimlerini tanımlar buildDir.
// Using a getter method
println project.buildDir
println getProject().getBuildDir()
// Using a setter method
project.buildDir = 'target'
getProject().setBuildDir('target')
Yöntem Çağrılarında İsteğe Bağlı Parantezler
Groovy, yöntem çağırmada parantezlerin isteğe bağlı olduğu özel bir özellik içerir. Bu özellik Gradle komut dosyası için de geçerlidir.
Aşağıdaki söz dizimine bir göz atın. Bu, çağıran bir yöntemi tanımlarsystemProperty nın-nin test nesne.
test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')
Yöntemin Son Parametresi Olarak Kapanış
Gradle DSL, birçok yerde kapatma kullanır. Bir yöntemin son parametresi bir kapanışsa, kapanışı yöntem çağrısından sonra yerleştirebilirsiniz.
Aşağıdaki kod parçası, Closure'ların repositories () yöntem parametreleri olarak kullandığı sözdizimlerini tanımlar.
repositories {
println "in a closure"
}
repositories() {
println "in a closure"
}
repositories({ println "in a closure" })
Varsayılan İçe Aktarmalar
Gradle, Gradle komut dosyalarına otomatik olarak bir dizi içe aktarma ifadesi ekler. Aşağıdaki liste, Gradle komut dosyasına varsayılan içe aktarma paketlerini gösterir.
import org.gradle.*
import org.gradle.api.*
import org.gradle.api.artifacts.*
import org.gradle.api.artifacts.cache.*
import org.gradle.api.artifacts.component.*
import org.gradle.api.artifacts.dsl.*
import org.gradle.api.artifacts.ivy.*
import org.gradle.api.artifacts.maven.*
import org.gradle.api.artifacts.query.*
import org.gradle.api.artifacts.repositories.*
import org.gradle.api.artifacts.result.*
import org.gradle.api.component.*
import org.gradle.api.credentials.*
import org.gradle.api.distribution.*
import org.gradle.api.distribution.plugins.*
import org.gradle.api.dsl.*
import org.gradle.api.execution.*
import org.gradle.api.file.*
import org.gradle.api.initialization.*
import org.gradle.api.initialization.dsl.*
import org.gradle.api.invocation.*
import org.gradle.api.java.archives.*
import org.gradle.api.logging.*
import org.gradle.api.plugins.*
import org.gradle.api.plugins.announce.*
import org.gradle.api.plugins.antlr.*
import org.gradle.api.plugins.buildcomparison.gradle.*
import org.gradle.api.plugins.jetty.*
import org.gradle.api.plugins.osgi.*
import org.gradle.api.plugins.quality.*
import org.gradle.api.plugins.scala.*
import org.gradle.api.plugins.sonar.*
import org.gradle.api.plugins.sonar.model.*
import org.gradle.api.publish.*
import org.gradle.api.publish.ivy.*
import org.gradle.api.publish.ivy.plugins.*
import org.gradle.api.publish.ivy.tasks.*
import org.gradle.api.publish.maven.*
import org.gradle.api.publish.maven.plugins.*
import org.gradle.api.publish.maven.tasks.*
import org.gradle.api.publish.plugins.*
import org.gradle.api.reporting.*
import org.gradle.api.reporting.components.*
import org.gradle.api.reporting.dependencies.*
import org.gradle.api.reporting.model.*
import org.gradle.api.reporting.plugins.*
import org.gradle.api.resources.*
import org.gradle.api.specs.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.ant.*
import org.gradle.api.tasks.application.*
import org.gradle.api.tasks.bundling.*
import org.gradle.api.tasks.compile.*
import org.gradle.api.tasks.diagnostics.*
import org.gradle.api.tasks.incremental.*
import org.gradle.api.tasks.javadoc.*
import org.gradle.api.tasks.scala.*
import org.gradle.api.tasks.testing.*
import org.gradle.api.tasks.testing.junit.*
import org.gradle.api.tasks.testing.testng.*
import org.gradle.api.tasks.util.*
import org.gradle.api.tasks.wrapper.*
import org.gradle.authentication.*
import org.gradle.authentication.http.*
import org.gradle.buildinit.plugins.*
import org.gradle.buildinit.tasks.*
import org.gradle.external.javadoc.*
import org.gradle.ide.cdt.*
import org.gradle.ide.cdt.tasks.*
import org.gradle.ide.visualstudio.*
import org.gradle.ide.visualstudio.plugins.*
import org.gradle.ide.visualstudio.tasks.*
import org.gradle.ivy.*
import org.gradle.jvm.*
import org.gradle.jvm.application.scripts.*
import org.gradle.jvm.application.tasks.*
import org.gradle.jvm.platform.*
import org.gradle.jvm.plugins.*
import org.gradle.jvm.tasks.*
import org.gradle.jvm.tasks.api.*
import org.gradle.jvm.test.*
import org.gradle.jvm.toolchain.*
import org.gradle.language.assembler.*
import org.gradle.language.assembler.plugins.*
import org.gradle.language.assembler.tasks.*
import org.gradle.language.base.*
import org.gradle.language.base.artifact.*
import org.gradle.language.base.plugins.*
import org.gradle.language.base.sources.*
import org.gradle.language.c.*
import org.gradle.language.c.plugins.*
import org.gradle.language.c.tasks.*
import org.gradle.language.coffeescript.*
import org.gradle.language.cpp.*
import org.gradle.language.cpp.plugins.*
import org.gradle.language.cpp.tasks.*
import org.gradle.language.java.*
import org.gradle.language.java.artifact.*
import org.gradle.language.java.plugins.*
import org.gradle.language.java.tasks.*
import org.gradle.language.javascript.*
import org.gradle.language.jvm.*
import org.gradle.language.jvm.plugins.*
import org.gradle.language.jvm.tasks.*
import org.gradle.language.nativeplatform.*
import org.gradle.language.nativeplatform.tasks.*
import org.gradle.language.objectivec.*
import org.gradle.language.objectivec.plugins.*
import org.gradle.language.objectivec.tasks.*
import org.gradle.language.objectivecpp.*
import org.gradle.language.objectivecpp.plugins.*
import org.gradle.language.objectivecpp.tasks.*
import org.gradle.language.rc.*
import org.gradle.language.rc.plugins.*
import org.gradle.language.rc.tasks.*
import org.gradle.language.routes.*
import org.gradle.language.scala.*
import org.gradle.language.scala.plugins.*
import org.gradle.language.scala.tasks.*
import org.gradle.language.scala.toolchain.*
import org.gradle.language.twirl.*
import org.gradle.maven.*
import org.gradle.model.*
import org.gradle.nativeplatform.*
import org.gradle.nativeplatform.platform.*
import org.gradle.nativeplatform.plugins.*
import org.gradle.nativeplatform.tasks.*
import org.gradle.nativeplatform.test.*
import org.gradle.nativeplatform.test.cunit.*
import org.gradle.nativeplatform.test.cunit.plugins.*
import org.gradle.nativeplatform.test.cunit.tasks.*
import org.gradle.nativeplatform.test.googletest.*
import org.gradle.nativeplatform.test.googletest.plugins.*
import org.gradle.nativeplatform.test.plugins.*
import org.gradle.nativeplatform.test.tasks.*
import org.gradle.nativeplatform.toolchain.*
import org.gradle.nativeplatform.toolchain.plugins.*
import org.gradle.platform.base.*
import org.gradle.platform.base.binary
import org.gradle.platform.base.component.*
import org.gradle.platform.base.plugins.*
import org.gradle.platform.base.test.*
import org.gradle.play.*
import org.gradle.play.distribution.*
import org.gradle.play.platform.*
import org.gradle.play.plugins.*
import org.gradle.play.tasks.*
import org.gradle.play.toolchain.*
import org.gradle.plugin.use.*
import org.gradle.plugins.ear.*
import org.gradle.plugins.ear.descriptor.*
import org.gradle.plugins.ide.api.*
import org.gradle.plugins.ide.eclipse.*
import org.gradle.plugins.ide.idea.*
import org.gradle.plugins.javascript.base.*
import org.gradle.plugins.javascript.coffeescript.*
import org.gradle.plugins.javascript.envjs.*
import org.gradle.plugins.javascript.envjs.browser.*
import org.gradle.plugins.javascript.envjs.http.*
import org.gradle.plugins.javascript.envjs.http.simple.*
import org.gradle.plugins.javascript.jshint.*
import org.gradle.plugins.javascript.rhino.*
import org.gradle.plugins.javascript.rhino.worker.*
import org.gradle.plugins.signing.*
import org.gradle.plugins.signing.signatory.*
import org.gradle.plugins.signing.signatory.pgp.*
import org.gradle.plugins.signing.type.*
import org.gradle.plugins.signing.type.pgp.*
import org.gradle.process.*
import org.gradle.sonar.runner.*
import org.gradle.sonar.runner.plugins.*
import org.gradle.sonar.runner.tasks.*
import org.gradle.testing.jacoco.plugins.*
import org.gradle.testing.jacoco.tasks.*
import org.gradle.testkit.runner.*
import org.gradle.util.*