はじめに
eclipseでspring-bootでgradleでマルチなプロジェクトでプロジェクトフォルダを同階層に配置した構成でやってみようと思いました。なかなかうまくいかなかったのでメモ代わりに!
構成
fooをルートプロジェクトにしてbarを子プロジェクトとして↓のようにしてみました。
foo ← プロジェクトフォルダ
build.gradle
settings.gradle
bar ← プロジェクトフォルダ
build.gradle
内容
foo
fooフォルダのgradleはいつものようにgradleを作って、settings.gradleの1行目にincludeFlat 'bar'
を書き足しました。
foo/build.gradle
plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compile project(':bar')
compileOnly 'org.projectlombok:lombok'
}
foo/settings.gradle
includeFlat 'bar'
/*
pluginManagement {
repositories {
gradlePluginPortal()
}
}
*/
rootProject.name = 'foo'
bar
こっちはいろいろ試して最後に以下のようになりました。
pluginsにid 'org.springframework.boot' version '2.1.4.RELEASE'
があるとうまく認識してくれませんでした。
apply plugin: 'io.spring.dependency-management'
やapply plugin: 'org.springframework.boot'
はなくても動くかもしれません。(試してませんw)
bar/build.gradle
plugins {
id 'java'
}
apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.springframework.boot:spring-boot-starter-thymeleaf'
compileOnly 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
compileOnly 'org.projectlombok:lombok'
}
おわり
とにかくこんな構成で動くところまでは確認しました。
久しぶりにgradle触ったら記述方法が変わってて軽いギャップを感じてしまいました。