
EJB JAR の扱い
Gradle の EAR プラグインでは、以下のコンフィグレーションが追加される。
- deploy : EAR ルート直下に配置される(非推移的)
- earlib : ライブラリディレクトリ(
lib)に配備される(推移的)
EJB JAR を利用する場合は以下のように deploy に指定することになる。
dependencies {
deploy(project(":ejb"))
}
しかしこの場合、EJB JAR が依存するライブラリは lib に配備されない。
以下のように earlib にも指定し、自身の EJB JAR 自体を除外すると良い。
dependencies {
deploy(project(":ejb"))
earlib(project(":ejb")) {
exclude(group = project(":ejb").group.toString(), module = project(":ejb").name)
}
}
build.gradle.kts 設定
以下の4つのモジュールで構成されるプロジェクトの場合の設定例
- common
- ejb
- war
- ear
ejb
plugins {
`java-library`
}
dependencies {
api(project(":common"))
}
war
plugins {
war
}
dependencies {
providedCompile(project(":ejb"))
}
tasks.jar {
enabled = false
}
ear
plugins {
ear
}
dependencies {
deploy(project(":ejb"))
deploy(project(":war", "archives"))
earlib("foo:bar:1.0.0")
earlib(project(":ejb")) {
exclude(group = project(":ejb").group.toString(), module = project(":ejb").name)
}
}
tasks.jar {
enabled = false
}
※ Gradle 10 では archives configuration は利用できなくなる予定なので、war 側で war 提供用の configuration を定義する必要がある
ear.ear
生成される ear.ear は以下のレイアウトとなる
ear.ear ├ META-INF ├ lib │ ├ foo-bar-1.0.0.jar │ └ common.jar ├ war.war └ ejb.jar