このマニュアルは現在作成中であり、未完成です。
改善にご協力いただければ幸いです。 README をご覧ください。

23 Gradle を使用したビルド

Ratpack アプリケーションをビルドする推奨方法は、Ratpack プロジェクトが提供する Gradle プラグインを使用して Gradle ビルドシステム を使うことです。

Ratpack は純粋にランタイムツールキットであり、Ruby on RailsGrails などの開発時ツールではありません。つまり、Ratpack アプリのビルドには好きなものを使用できます。提供されている Gradle プラグインは単なる利便性を提供するものであり、Ratpack 開発に不可欠ではありません。

1.23 セットアップ

最初の要件は、Gradle プロジェクトに Gradle プラグインを適用することです…

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
  }
}

apply plugin: "io.ratpack.ratpack-java"

repositories {
  mavenCentral()
}

または、Groovy ベースの Ratpack プロジェクトの場合…

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
  }
}

apply plugin: "io.ratpack.ratpack-groovy"

repositories {
  mavenCentral()
}

'io.ratpack.ratpack-java' プラグインは、コア Gradle の 'java' プラグイン を適用します。'io.ratpack.ratpack-groovy' プラグインは、コア Gradle の 'groovy' プラグイン を適用します。これは、標準的な Gradle ベースのプロジェクトのように、コードと依存関係をアプリに追加できることを意味します(例:src/main/[groovy|java] にソースを配置)。'io.ratpack.ratpack-groovy' プラグインは暗黙的に 'io.ratpack.ratpack-java' プラグインを適用することに注意してください。

2.23 Ratpack 依存関係

Ratpack 拡張ライブラリに依存するには、通常の implementation 依存関係として追加するだけです…

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
  }
}

apply plugin: "io.ratpack.ratpack-groovy"

repositories {
  mavenCentral()
}

dependencies {
  implementation ratpack.dependency("dropwizard-metrics")
}

ratpack.dependency("dropwizard-metrics")"io.ratpack:ratpack-dropwizard-metrics:«ratpack-gradle 依存関係のバージョン»" と同等です。これは、コア配布の一部である依存関係を追加する推奨方法です。

'io.ratpack.ratpack-java' プラグインは、次の暗黙的な依存関係を追加します。

'io.ratpack.ratpack-groovy' プラグインは、次の暗黙的な依存関係を追加します。

利用可能なライブラリは、search.maven.org で検索できます。すべての Ratpack JAR は Maven Central に公開されています。

3.23 'application' プラグイン

'ratpack-java''ratpack-groovy' の両方のプラグインは、コア Gradle の 'application' プラグイン も適用します。このプラグインにより、ソフトウェアのスタンドアロン実行可能配布物を作成できます。これは、Ratpack アプリケーションの推奨されるデプロイ形式です。

'application' プラグインでは、アプリケーションのメインクラス(エントリポイント)を指定する必要があります。Gradle ビルドファイルで 'mainClassName' 属性を、'static void main(String[] args)' メソッドを含むクラスの完全修飾クラス名に設定する必要があります。これは、'ratpack-groovy' プラグインによって GroovyRatpackMain に事前に設定されています。カスタムエントリポイントを使用する場合は、これを変更できます('application' プラグインのドキュメントを参照してください)。

4.23 'shadow' プラグイン

'ratpack-java''ratpack-groovy' の両方のプラグインには、サードパーティの 'shadow' プラグイン の統合サポートが含まれています。このプラグインを使用すると、Ratpack アプリケーションとコンパイル時および実行時の依存関係を含む自己完結型の「fat-jar」を作成できます。

プラグインは 'shadow' プラグインの適用に反応し、追加のタスク依存関係を設定します。それらは 'shadow' プラグインを適用せず、互換性の理由から、依存関係として 'shadow' のバージョンを提供しません。

'shadow' 統合を使用するには、プロジェクトに依存関係を含めてプラグインを適用する必要があります。

buildscript {
  repositories {
    mavenCentral()
    gradlePluginPortal()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
    classpath 'gradle.plugin.com.github.johnrengelman:shadow:7.1.2'
  }
}

apply plugin: "io.ratpack.ratpack-java"
apply plugin: 'com.github.johnrengelman.shadow'

repositories {
  mavenCentral()
}

'shadow' プラグインの最新バージョンは、プロジェクトの Github ページ で確認できます。

これで、…を実行して fat-jar を生成できます。

./gradlew shadowJar

5.23 ベースディレクトリ

ベースディレクトリ は、アプリケーションのファイルシステムのルートと効果的に同じです。ビルド時、これは事実上アプリケーションのメインリソースセットです(つまり、src/main/resources)。Ratpack プラグインは、メインリソースの補足的なソースである src/ratpack を追加します。このディレクトリを使用しないことを選択し、代わりに src/main/resources を使用するか、Gradle ビルドの ratpack.baseDir プロパティを使用してその場所を変更できます。

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
  }
}

apply plugin: "io.ratpack.ratpack-groovy"

repositories {
  mavenCentral()
}

ratpack.baseDir = file('ratpack')

配布物としてパッケージ化する場合、プラグインは配布物内に app というディレクトリを作成し、プロジェクトのすべてのメインリソースが含まれます。このディレクトリは、開始スクリプトを介してアプリが起動されるときにクラスパスに追加されます。これにより、アプリケーションはJARからオンザフライで解凍する代わりに、ディスクから直接ベースディレクトリからファイルを読み取ることができます。これはより効率的です。

詳細は 起動 をご覧ください。

1.5.23 'ratpack.groovy' スクリプト

'ratpack-groovy' プラグインは、メインアプリケーション定義がベースディレクトリ内の ratpack.groovy または Ratpack.groovy のいずれかに配置されることを想定しています。デフォルトでは、src/main/resourcessrc/ratpack を効果的に検索します。このファイルは、アプリケーションがこのファイルのコンパイルを管理するため、src/main/groovy に入れるべきではありません。したがって、コンパイル済み形式ではなく、ソース形式(つまり、.groovy ファイルとして)でクラスパスに存在する必要があります。

このファイルの内容の詳細については、Groovy をご覧ください。

6.23 アプリケーションの実行

'application' プラグインは、Ratpack アプリケーションを起動するための 'run' タスクを提供します。これは、コア Gradle の JavaExec タイプのタスクです。'ratpack-java' プラグインは、この 'run' タスクがシステムプロパティ 'ratpack.development'true に設定して起動するように構成します。

開発時実行のために追加のシステムプロパティを設定する場合は、このタスクを構成できます…

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
  }
}

apply plugin: "io.ratpack.ratpack-java"

repositories {
  mavenCentral()
}

run {
  systemProperty "app.dbPassword", "secret"
}

1.6.23 開発時リロード

Ratpack Gradle プラグインは、Gradle の継続的ビルド機能 と統合されています。これを活用するには、--continuous(または -t)引数を使用して run タスクを実行します。

ソースまたはリソースに加えられた変更は、コンパイルおよび処理され、その結果、アプリケーションがリロードされます。

2.6.23 'shadow' プラグインを使用した実行

プロジェクトに適用されている場合、'shadow' プラグインは、fat-jar から Ratpack アプリケーションを起動するための 'runShadow' タスクを提供します。'run' タスクと同様に、これはコア Gradle JavaExec タイプのタスクです。'shadow' プラグインは、この 'runShadow' タスクを java -jar <path/to/shadow-jar.jar> コマンドを使用してプロセスを開始するように構成します。

アプリケーションはパッケージ化された JAR ファイルから実行されるため、'runShadow' タスクではクラスのリロードはサポートされていません。

追加のシステムプロパティまたは JVM オプションはこのタスクで構成できます…

buildscript {
  repositories {
    mavenCentral()
    gradlePluginPortal()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:2.0.0-rc-1"
    classpath "gradle.plugin.com.github.johnrengelman:shadow:7.1.2"
  }
}

apply plugin: "io.ratpack.ratpack-java"
apply plugin: "com.github.johnrengelman.shadow"

repositories {
  mavenCentral()
}

runShadow {
  systemProperty "app.dbPassword", "secret"
}