第45章 アプリケーション プラグイン

The Gradle application plugin extends the language plugins with common application related tasks. It allows running and bundling applications for the jvm.

Gradle アプリケーション プラグインは言語プラグインを一般的なアプリケーションの関連タスクで拡張しています。 JVM 用アプリケーションの実行 及び ビルドが可能です。

45.1. 使用方法Usage

To use the application plugin, include in your build script:

アプリケーション プラグインを使うためには、ビルドスクリプトに下記を含めます:

例45.1 Using the application plugin

build.gradle

apply plugin:'application'

To define the main-class for the application you have to set the mainClassName property as shown below

アプリケーションのメインクラスを定義するには、次のように mainClassName プロパティを設定するだけでよいです。

例45.2 Configure the application main class

build.gradle

mainClassName = "org.gradle.sample.Main"

Then, you can run the application by running gradle run. Gradle will take care of building the application classes, along with their runtime dependencies, and starting the application with the correct classpath. You can launch the application in debug mode with gradle run --debug-jvm (see JavaExec.setDebug()).

あとは gradle run を実行するだけで、アプリケーションを実行することができます。 Gradle は アプリケーションクラスのビルドから 実行時の依存解決、 適切なクラスパスでのアプリケーションの起動まで全て面倒みてくれます。

The plugin can also build a distribution for your application. The distribution will package up the runtime dependencies of the application along with some OS specific start scripts. All files stored in src/dist will be added to the root of the distribution. You can run gradle installApp to create an image of the application in build/install/projectName. You can run gradle distZip to create a ZIP containing the distribution.

このプラグインではアプリケーション用のディストリビューションをビルドすることもできます。 ディストリビューションには OS 依存の起動スクリプトと一緒に アプリケーションの実行時の依存ライブラリもパッケージングされます。 gradle installbuild/install/projectName 配下に アプリケーションイメージを生成することができます。 gradle distZip で ディストリビューションを含む ZIP ファイルを生成することができます。

If your Java application requires a specific set of JVM settings or system properties, you can configure the applicationDefaultJvmArgs property. These JVM arguments are applied to the run task and also considered in the generated start scripts of your distribution.

例45.3 Configure default JVM settings

build.gradle

applicationDefaultJvmArgs = ["-Dgreeting.language=en"]

45.2. タスクTasks

The Application plugin adds the following tasks to the project.

アプリケーション プラグインは 次のタスクをプロジェクトに追加します。

表45.1 アプリケーション プラグイン - タスクApplication plugin - tasks

タスク名Task name 依存先Depends on Type 説明Description
run classes JavaExec アプリケーションを起動します。Starts the application.
startScripts jar CreateStartScripts プロジェクトを JVM アプリケーションとして実行するための OS 依存スクリプトを生成します。 Creates OS specific scripts to run the project as a JVM application.
installApp jar, startScripts Sync 指定したディレクトリ配下にアプリケーションをインストールします。 Installs the application into a specified directory.
distZip jar, startScripts Zip 実行ライブラリと OS 依存スクリプトを含んだ 完全なディストリビューション ZIP アーカイブを生成します。 Creates a full distribution ZIP archive including runtime libraries and OS specific scripts.
distTar jar, startScripts Tar 実行ライブラリとOS依存スクリプトを含んだ完全なディストリビューションTARアーカイブを生成します。 Creates a full distribution TAR archive including runtime libraries and OS specific scripts.

45.3. 規約プロパティConvention properties

The application plugin adds some properties to the project, which you can use to configure its behaviour. See Project.

アプリケーション プラグインは いくつかのプロパティをプロジェクトに追加します。そのプロパティを設定すれば挙動が変えられます。詳しくは Project を参照してください。

45.4. ディストリビューションに他のリソースを含める Including other resources in the distribution

One of the convention properties added by the plugin is applicationDistribution which is a CopySpec. This specification is used by the installApp and distZip tasks as the specification of what is to be included in the distribution. In addition to copying the start scripts to the bin dir and necessary jars to lib in the distribution, all of the files from the src/dist directory are also copied. To include any static files in the distribution, simply arrange them in the src/dist directory.

このプラグインは、applicationDistributionというCopySpec型の規約プロパティを追加します。 これは、installAppタスクとdistZipタスクにより何がディストリビューションに含められるのか、その仕様を定義したものです。 実行用スクリプトをディストリビューションのbinディレクトリに、必要なjarをlibにコピーするほか、src/distディレクトリにある全てのファイルをコピーします。 何らかの静的ファイルをディストリビューションに含めたい場合は、単にsrc/distディレクトリにそれらのファイルを置くだけで大丈夫です。

If your project generates files to be included in the distribution, e.g. documentation, you can add these files to the distribution by adding to the applicationDistribution copy spec.

あるプロジェクトが、ディストリビューションに含めるファイル(例えばドキュメントなど)を生成する、といったケースもあります。 そのような場合、applicationDistributionコピー仕様を追加することで、ファイルをディストリビューションに追加することができます。

例45.4 他タスクの出力をアプリケーションのディストリビューションに含める

build.gradle

task createDocs {
    def docs = file("$buildDir/docs")
    outputs.dir docs
    doLast {
        docs.mkdirs()
        new File(docs, "readme.txt").write("Read me!")
    }
}

applicationDistribution.from(createDocs) {
    into "docs"
}

By specifying that the distribution should include the task's output files (see 「タスクの入力物と出力物を宣言するDeclaring a task's inputs and outputs), Gradle knows that the task that produces the files must be invoked before the distribution can be assembled and will take care of this for you.

ディストリビューションにタスクの出力(「タスクの入力物と出力物を宣言するDeclaring a task's inputs and outputs参照)を格納するように指定すると、 Gradleは、ディストリビューションを作成する前にそのタスクを実行しなければならないのだと判断し、その作業を引き受けてくれます。

例45.5 ディストリビューションのファイルを自動的に作成する

gradle distZip の出力

> gradle distZip
:createDocs
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:startScripts
:distZip

BUILD SUCCESSFUL

Total time: 1 secs