Gradle-ビルドスクリプト

Gradleは、2つのことを処理するためのスクリプトファイルを作成します。1つはprojects もう1つは tasks。すべてのGradleビルドは、1つ以上のプロジェクトを表します。プロジェクトは、ライブラリJARまたはWebアプリケーションを表すか、他のプロジェクトによって生成されたJARからアセンブルされたZIPを表す場合があります。簡単に言うと、プロジェクトはさまざまなタスクで構成されています。タスクとは、ビルドが実行する作業の一部を意味します。タスクには、いくつかのクラスのコンパイル、JARの作成、Javadocの生成、またはいくつかのアーカイブのリポジトリへの公開が含まれる場合があります。

Gradleの用途 Groovy language スクリプトを書くため。

ビルドスクリプトの作成

Gradleは、ビルドを記述するためのドメイン固有言語(DSL)を提供します。これはGroovy言語を使用して、ビルドの記述を容易にします。Gradleの各ビルドスクリプトはUTF-8を使用してエンコードされ、オフラインで保存され、build.gradleという名前が付けられます。

build.gradle

Groovyスクリプトを使用して、タスクとプロジェクトについて説明しています。Gradleコマンドを使用してGradleビルドを実行できます。このコマンドは、というファイルを探しますbuild.gradle。次の例を見てください。これは、印刷する小さなスクリプトを表しています。tutorialspoint。次のスクリプトをコピーして、という名前のファイルに保存しますbuild.gradle。このビルドスクリプトは、tutorialspoint文字列を出力するために使用されるタスク名helloを定義します。

task hello {
   doLast {
      println 'tutorialspoint'
   }
}

コマンドプロンプトで次のコマンドを実行します。上記のスクリプトを実行します。build.gradleファイルが保存されている場所でこれを実行する必要があります。

C:\> gradle –q hello

出力:

tutorialspoint

タスクがANTのターゲットと同様に機能すると思われる場合は、その通りです。GradleタスクはANTターゲットと同等です。

ショートカット(記号を表す)を指定することで、このhelloタスクを簡略化できます。 <<)に doLastステートメント。このショートカットを上記のタスクに追加するとhello 次のスクリプトのようになります。

task hello << {
   println 'tutorialspoint'
}

上記と同じように、上記のスクリプトを使用して実行できます gradle –q hello コマンド。

Gradeスクリプトは、主に2つの実際のオブジェクトを使用しました。1つはプロジェクトオブジェクトで、もう1つはスクリプトオブジェクトです。

Project Object−各スクリプトは、1つまたは複数のプロジェクトについて説明します。実行中に、このスクリプトはプロジェクトオブジェクトを構成します。プロジェクトオブジェクトに委任されているいくつかのメソッドを呼び出して、ビルドスクリプトでプロパティを使用できます。

Script Object− Gradleは、スクリプトコードを、スクリプトインターフェイスを実装して実行するクラスに取り込みました。これは、スクリプトインターフェイスによって宣言されたすべてのプロパティとメソッドのうち、スクリプトで使用できることを意味します。

次の表は、 standard project properties。これらのプロパティはすべて、ビルドスクリプトで使用できます。

シニア番号 名前 タイプ デフォルト値
1 事業 事業 プロジェクトインスタンス
2 名前 ストリング プロジェクトディレクトリの名前。
3 ストリング プロジェクトの絶対パス。
4 説明 ストリング プロジェクトの説明。
5 projectDir ファイル ビルドスクリプトを含むディレクトリ。
6 buildDir ファイル projectDir / build
7 グループ オブジェクト 詳細不明
8 バージョン オブジェクト 詳細不明
9 AntBuilder AntBuilderインスタンス

Groovyの基本

Gradleビルドスクリプトは、完全な長さのGroovyAPIを使用します。スタートアップとして、次の例を見てください。

次の例では、文字列を大文字に変換する方法について説明します。

以下のコードをコピーしてに保存します build.gradle ファイル。

task upper << {
   String expString = 'TUTORIALS point'
   println "Original: " + expString
   println "Upper case: " + expString.toUpperCase()
}

コマンドプロンプトで次のコマンドを実行します。上記のスクリプトを実行します。build.gradleファイルが保存されている場所でこれを実行する必要があります。

C:\> gradle –q upper

出力:

Original: TUTORIALS point
Upper case: TUTORIALS POINT

次の例では、暗黙パラメーター($ it)の値を4回出力する方法について説明します。

次のコードをコピーしてに保存します build.gradle ファイル。

task count << {
   4.times { 
      print "$it " 
   }
}

コマンドプロンプトで次のコマンドを実行します。上記のスクリプトを実行します。build.gradleファイルが保存されている場所でこれを実行する必要があります。

$ gradle –q count

出力:

0 1 2 3

Groovy言語は、以下で説明するいくつかの重要な機能で多くの機能を提供します。

GroovyJDKメソッド

Groovyは、標準のJavaクラスに多くの便利なメソッドを追加します。たとえば、JDKのIterableAPIはeach() IterableInterfaceの要素を反復処理するメソッド。

次のコードをコピーしてに保存します build.gradle ファイル。

task groovyJDK << {
   String myName = "Marc";
   myName.each() { 
      println "${it}" 
   };
}

コマンドプロンプトで次のコマンドを実行します。上記のスクリプトを実行します。build.gradleファイルが保存されている場所でこれを実行する必要があります。

C:\> gradle –q groovyJDK

出力:

M
a
r
c

プロパティアクセサー

参照を指定することにより、特定のプロパティの適切なgetterメソッドとsetterメソッドに自動的にアクセスできます。

次のスニペットは、プロパティのgetterメソッドとsetterメソッドの構文を定義しています。 buildDir

// Using a getter method
println project.buildDir
println getProject().getBuildDir()

// Using a setter method
project.buildDir = 'target'
getProject().setBuildDir('target')

メソッド呼び出しのオプションの括弧

Groovyには、メソッド呼び出しに特別な機能が含まれています。これは、メソッド呼び出しでは括弧がオプションであるということです。この機能は、Gradleスクリプトにも適用されます。

次の構文を見てください。それはメソッド呼び出しを定義しますsystemPropertytest オブジェクト。

test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')

メソッドの最後のパラメータとしてのクロージャ

Gradle DSLは、多くの場所でクロージャを使用しています。メソッドの最後のパラメーターがクロージャである場合、メソッド呼び出しの後にクロージャを配置できます。

次のスニペットは、Closuresがrepositories()メソッドパラメーターとして使用する構文を定義しています。

repositories {
   println "in a closure"
}
repositories() { 
   println "in a closure" 
}
repositories({ println "in a closure" })

デフォルトのインポート

Gradleは、インポートステートメントのセットをGradleスクリプトに自動的に追加します。次のリストは、Gradleスクリプトへのデフォルトのインポートパッケージを示しています。

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