教科書はこれ。 第57章 マルチプロジェクトのビルド
まずは Jersey の設定を作って、分離するものを指定する。
Jerseyの設定2(web.xmlとかApplicationクラスとか) - edgegram
サーブレット設定をソースで
web.xml
ファイルは昔は役に立ったアーキテクチャだ。
一つの Tomcat で複数のサーブレットをデプロイするにあたって、そのデプロイ設定を行うにはリーズナブルだったろう。
だが、はっきり言おう、今日日1サーバにそう何個もデプロイなんざしねーよと(汗
MVC ができてルーティングができるようになった時から、その役目を失ったと言える。
ということで設定
package net.white_azalea import org.glassfish.jersey.server.ResourceConfig import org.glassfish.jersey.server.ServerProperties import javax.ws.rs.ApplicationPath @ApplicationPath("/") class ApplicationSetting : ResourceConfig { constructor() { packages("net.white_azalea") property(ServerProperties.PROVIDER_SCANNING_RECURSIVE, true) } }
そしてこれがあると、設定ファイル( web.xml
)いらずなのです。
そしてプロジェクト分離
設定一つで、管理しようと思う。
何って完全分離とか難しすぎた
目的はこんな感じに配置すること。
- ROOT
- build.gradle
- settings.gradle
- src/main/kotlin/net/white_azalea/ApplicationSetting.kt
プロジェクト設定を含むソース - settings
サブプロジェクト- src/main/kotlin/net/white_azalea/api/Example.kt ソース
まずは ROOT/settings.gradle
include 'settings'
次に、ROOT/build.gradle
を編集
apply plugin: 'maven' apply plugin: 'war' apply plugin: 'org.akhikhl.gretty' apply plugin: 'kotlin' sourceCompatibility = 1.8 def jerseyVersion = '2.25.1' buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.3' } } def thisGroup = 'net.white-azalea' def thisVersion = '1.0' allprojects { apply plugin: 'maven' apply plugin: 'war' group = thisGroup version = thisVersion repositories { jcenter() mavenCentral() mavenLocal() } dependencies { compile 'javax.ws.rs:javax.ws.rs-api:2.0.1' compile "org.glassfish.jersey.containers:jersey-container-servlet:${jerseyVersion}" testCompile 'junit:junit:4.+' } } ext { appName = 'example' project.version = thisVersion project.group = thisGroup project.description = 'example gradle application.' } dependencies { compile project(':settings') }
ここまで書いたら後は settings
ディレクトリを掘ってファイルを配置すればおk