Gradle-build-script

提供:Dev Guides
移動先:案内検索

Gradle-ビルドスクリプト

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

Gradleは、スクリプトの作成に* Groovy言語*を使用します。

ビルドスクリプトの作成

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

build.gradle

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

task hello {
   doLast {
      println 'finddevguides'
   }
}

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

C:\> gradle –q hello

出力:

finddevguides

タスクがANTのターゲットと同様に機能すると考える場合、そうです-GradleタスクはANTターゲットと同等です。

*doLast* ステートメントへのショートカット(記号 *<<* を表す)を指定することにより、このhelloタスクを単純化できます。 このショートカットを上記のタスク *hello* に追加すると、次のスクリプトのようになります。
task hello << {
   println 'finddevguides'
}

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

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

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

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

次の表は、*標準プロジェクトプロパティ*のリストを定義しています。 これらのプロパティはすべて、ビルドスクリプトで使用できます。

Sr. No. Name Type Default Value
1 project Project The Project instance
2 name String The name of the project directory.
3 path String The absolute path of the project.
4 description String A description for the project.
5 projectDir File The directory containing the build script.
6 buildDir File projectDir/build
7 group Object Unspecified
8 version Object Unspecified
9 ant AntBuilder An AntBuilder instance

Groovyの基本

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

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

以下のコードをコピーして 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言語は、以下で説明するいくつかの重要な機能の中で多くの機能を提供します。

Groovy JDKメソッド

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

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

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

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

C:\> gradle –q groovyJDK

出力:

M
a
r
c

プロパティアクセサ

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

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

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

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

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

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

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

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

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

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

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

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

デフォルトのインポート

Gradleは、インポートステートメントのセットを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.*