Gradle × GAE/J
竹本 和敏
本日のお題目
Google App Engine for Javaのチュートリアルを、Gradleでやってみよう
チュートリアルの手順(抄録)
これをGradleでやってみる
最大の関門:
mvn archetype:generateに相当する処理を
どうするか
これをGradleでやってみる
mvn archetype:generateに相当するgradle initで提供されるテンプレートはこれだけ
https://gradle.org/docs/current/userguide/build_init_plugin.html
これをGradleでやってみる
プロジェクトの作成
テストした環境:
プロジェクトの作成
$ gradle init --type=pom
プロジェクトの作成
翻訳後のbuild.gradleはこんな感じ。
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.example.guestbook'
version = '1.0-SNAPSHOT'
description = """"""
sourceCompatibility = 1.7
targetCompatibility = 1.7
repositories {
maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
compile group: 'com.google.appengine', name: 'appengine-api-1.0-sdk', version:'1.9.17'
compile group: 'jstl', name: 'jstl', version:'1.2'
testCompile group: 'com.google.appengine', name: 'appengine-testing', version:'1.9.17'
testCompile group: 'com.google.appengine', name: 'appengine-api-stubs', version:'1.9.17'
providedCompile group: 'javax.servlet', name: 'servlet-api', version:'2.5'
}
build.gradleの手直し
これではGAE/Jのプロジェクトとして動かないので、動くようにbuild.gradleを編集する。
build.gradleの手直し
プラグインはこう変える。
※mavenプラグインは、pomをGradleから利用できるようにするわけではなく、Mavenリポジトリへのアップロード機能を提供するもの
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
apply plugin: 'appengine'
build.gradleの手直し
appengineプラグイン:
GitHubで公開されている、公式Gradleプラグイン
https://github.com/GoogleCloudPlatform/gradle-appengine-plugin
build.gradleの手直し
プラグインの説明にしたがい、buildscriptブロックを追加
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.google.appengine:gradle-appengine-plugin:1.9.17"
}
}
build.gradleの手直し
repositoriesブロックはmavenCentral()にする。
repositories {
mavenCentral()
}
build.gradleの手直し
dependenciesブロックには、最低これが必要。
dependencies {
appengineSdk "com.google.appengine:appengine-java-sdk:1.9.17"
}
build.gradleの手直し
appengineプラグインのプロパティは、こんな感じ。
appengine {� httpPort = 8085� downloadSdk = true
� appcfg {� email = 'benjamin.muschko@gmail.com'� passIn = true�� logs {� severity = 1� outputFile = file('mylogs.txt')� }�� app {� id = 'sample-app'� }� }�}
アプリを動かしてみる
アプリを動かしてみる
アプリをデプロイする
その他のタスク
Eclipseにインポートする
Gradle Projectとしてインポートする。
Eclipse上で開発
Gradleタスクは、プロジェクトの右クリックメニュー内にある、Gradle → Task Quick Launcherから実行する。
一度やってしまえば終わりだけど
正直、
めんどくせー!( ゚д゚ )クワッ!!
ちなみにMavenなしだと
….という手順になる。
別の方法を模索
Why Android Studio?
GAEプロジェクトだけにするには
まず普通にAndroidプロジェクトを作り、File → New ModuleでGoogle Cloud Platformを追加する。
GAEプロジェクトだけにするには
用意されているModule Typeは、以下の3種類。
今日のネタからすると、App Engine Java Servlet Moduleにしておくのがベターか?
App Engine Java Servlet Module | 標準的なJava Servletをサポート。OAuthはサポート外 |
App Engine Java Endpoints Module | Google Cloud Endpointで、クライアントアプリからのAPI直接呼出しをサポート。OAuth 2.0サポートも内蔵 |
App Engine Backend with Google Cloud Messaging | Endpoints Moduleに似ているが、こちらはGCMもサポート |
GAEプロジェクトだけにするには
その後、Project StructureでAndroidのモジュールを除去する。
GAEプロジェクトだけにするには
とはいえ
という場合には、よい選択肢かも。
そういえばGradleのバージョンが
Gradle 2.3 appengine and eclipse not working together?
( https://github.com/GoogleCloudPlatform/gradle-appengine-plugin/issues/174 )
ということで本日のキモ