Java Gradle マルチプロジェクト作成方法
プロジェクト構成
multi-sample +--- sample-common +--- sample-core (sample-commonに依存)
- multi-sampleの直下でGradleによるプロジェクト初期化
gradle init
- settings.gradleを編集
rootProject.name = 'multi-sample' include "sample-common", "sample-core"
- build.gradleを編集
subprojects { apply plugin: 'eclipse' apply plugin: 'java' apply plugin: 'idea' def defaultEncoding = 'UTF-8' tasks.withType(JavaCompile) { options.encoding = defaultEncoding } sourceCompatibility = 1.8 targetCompatibility = 1.8 project.ext { authorName = 'YOUR NAME' dropwizardVersion = 'バージョン' } repositories { mavenCentral() } dependencies { compile "io.dropwizard:dropwizard-core:${dropwizardVersion}" } version = '1.0' task wrapper(type: Wrapper) { gradleVersion = '2.14' } } project(':sample-common') { } project(':sample-core') { dependencies { compile project(':sample-common') } }
gradle eclipse
を叩く
git rebase・squash
rebase
今までのコミットしてきたものの上にmasterのコミットをポンっと置くイメージ。
rebaseするときは一旦新たにブランチを切ってから行うべし。
squash
コミットを一つにまとめる
squashの流れ
コマンドでコミットのログを見る
git log --oneline
を叩くと、
nanako:gtest nanako$ git log --oneline a0de58f last commit 1574f49 sample3 17a75e7 sample2 6b45ec9 sample1 791c07e first commit
sample1、sample2、sample3をcommit all
としてコミットをまとめるとすると、
git rebase -i 791c07e
を叩くと、下のものが出てくる。
pick 6b45ec9 sample1 pick 17a75e7 sample2 pick 1574f49 sample3 pick a0de58f last commit
sample2とsample3のpick
の部分をs
に変更して上書き保存。
コミットのメッセージが表示されるので、first commit's message is
に描かれているsample1
を消して、commit all
と書いて上書き保存。
再度コミットのログを確認
git log --oneline
a0de58f last commit 84yeu43 commit all 791c07e first commit
Java パラメーターの種類
@FormParam
<form> <input name = "email"> <input name = "password"> <input type = "submit"> </form>
email
、password
の部分にあたるものがパラメーターとして送られてくる。
@QueryParam
ブラウザから送るURLにある?
以降がパラメーターになる。
ex) http://xxxx.com/hoge?email=hoge@xxx.jp&password=“pass”
@PathParam
URLが下記の時、
ex) http://xxxx.com/hoge/1
APIの方で指定しているresource
/hoge/{ id }
の部分と対応していて、パラメーターはid = 1
になる。
.ymlにあるhttpClientとは
そもそもHTTPとは
WebクライアントとWebサーバーの送受信において使われる取り決めのこと。
リクエスト・レスポンスのルール。
Webアクセスの流れ
ユーザーがURLを入力する
HTTPリクエストが、サーバーに送られる
サーバーがHTTPリクエストを読み取って要求内容を分析する
要求されたデータを返す(HTTPレスポンス)
Webブラウザが、サーバーからのデータを解析して、WebページとしてPCに表示する
connectionTimeout
クライアントからサーバーへの接続が確立するまで待って諦めるまでの時間。
1000ms = 1秒
timeout
接続後のデータ取得をするために待って諦めるまでの時間。
dropwizard + Gradle
apply plugin: 'idea' apply plugin: 'java' def defaultEncoding = 'UTF-8' def jdkVersion = '1.8' repositories { mavenCentral() } dependencies { compile 'io.dropwizard:dropwizard-core:1.0.3' compile 'io.dropwizard:dropwizard-configuration:1.0.3' } compileJava { options.encoding = defaultEncoding } compileTestJava { options.encoding = defaultEncoding } idea { project { jdkName = jdkVersion languageLevel = jdkVersion } } jar { from (configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) { exclude 'META-INF/MANIFEST.MF' exclude 'META-INF/*.SF' exclude 'META-INF/*.DSA' exclude 'META-INF/*.RSA' } manifest { attributes('Main-Class': 'org.gradle.service.HelloWorldService') } }
gradle jar
を叩く。プロジェクトを右クリックしてGradle(STS)> Refresh Dependenciesを選択。
これでdependenciesが反映される。クラスの内容を、Dropwizard入門 - Qiitaに従って書いていく。
java -jar build/libs/gtest.jar server hello-world.yml
で実行。
エラー
java -jar build/libs/gtest.jar server hello-world.yml
を実行すると
エラー: メイン・クラスorg.gradle.service.HelloWorldServiceが見つからなかったかロードできませんでした
と出てくる。
HelloWorldServiceクラスは存在するのにさあどうして。
解決
gradle build
からの
java -jar build/libs/gtest.jar server hello-world.yml
で再びエラー
hello-world.yml has an error: * Failed to parse configuration at: logging.appenders.[0]; Could not resolve type id 'console' into a subtype of [simple type, class io.dropwizard.logging.AppenderFactory<ch.qos.logback.classic.spi.ILoggingEvent>]: known type ids = [AppenderFactory] at [Source: N/A; line: -1, column: -1] (through reference chain: org.gradle.configuration.HelloWorldConfiguration["logging"]->io.dropwizard.logging.DefaultLoggingFactory["appenders"]->java.util.ArrayList[0])
hello-world.ymlのloggin
とappenders
をコメントアウト。
hello-world.ymlファイル
template: "Hello, %s!" # use the simple server factory if you only want to run on a single port server: applicationConnectors: - type: http port: 28080 adminConnectors: - type: http port: 28081 ## logging settings. #logging: # # # the default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL. # level: DEBUG # # appenders: # - type: console # timeZone: JST
コマンドで再び
java -jar build/libs/gtest.jar server hello-world.yml
http://localhost:28080/hello?name=hoge
にアクセスすると
{"message":"Hello, hoge!"}
と無事表示されました。