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