Project Directory Strutcure
.
├── boogle-common
│ ├── build.gradle.kts
│ └── src
├── boogle-core
│ ├── build.gradle.kts
│ └── src
├── boogle-generator
│ ├── build.gradle.kts
│ └── src
├── boogle-logging
│ ├── build.gradle.kts
│ └── src
├── boogle-quartz
│ ├── build.gradle.kts
│ └── src
├── boogle-system
│ ├── build.gradle.kts
│ └── src
├── boogle-web-starter
│ ├── build.gradle.kts
│ └── src
├── buildSrc
│ ├── build
│ ├── build.gradle.kts
│ └── src
│ └── main
│ └── kotlin
│ └── org.example.app-conventions.gradle.kts
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
Setting Up Spring Boot Dependencies via buildSrc
buildSrc/build.gradle.kts
plugins {
`kotlin-dsl`
id("org.springframework.boot") version "2.7.3"
}
apply(plugin = "io.spring.dependency-management")
tasks.named<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
mainClass.set("org.example.WebApplication")
}
extra["slf4j.version"] = "1.7.36"
repositories {
maven { url = uri("https://plugins.gradle.org/m2/") }
gradlePluginPortal()
}
dependencies {
implementation("org.springframework.boot:spring-boot-gradle-plugin:2.7.3")
}
buildSrc/src/main/kotlin/org.example.app-conventions.gradle.kts
import org.springframework.boot.gradle.tasks.bundling.BootJar
plugins {
`java-library`
`maven-publish`
id("org.springframework.boot")
}
apply(plugin = "io.spring.dependency-management")
tasks.named<BootJar>("bootJar") {
mainClass.set("org.example.WebApplication")
}
repositories {
mavenLocal()
maven { url = uri("https://maven.aliyun.com/column/public") }
maven { url = uri("https://repo.maven.apache.org/maven2/") }
}
dependencies {
api("org.springframework.boot:spring-boot-starter-web")
api("org.springframework.boot:spring-boot-configuration-processor")
api("org.projectlombok:lombok:1.18.30")
annotationProcessor("org.projectlombok:lombok:1.18.30")
testAnnotationProcessor("org.projectlombok:lombok:1.18.30")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("io.projectreactor:reactor-test:3.5.11")
}
group = "org.example"
version = "1.0.0-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
Defining Subproject Dependencies
boogle-common/build.gradle.kts
plugins {
id("org.example.app-conventions")
}
dependencies {
api(project(":boogle-core"))
api("org.springframework.boot:spring-boot-starter-aop")
api("org.springframework.boot:spring-boot-starter-data-redis")
}
description = "Common utilities module"
boogle-core/build.gradle.kts
plugins {
id("org.example.app-conventions")
}
dependencies {
api("org.springframework.boot:spring-boot-starter-security")
testImplementation("org.springframework.security:spring-security-test:5.7.11")
}
description = "Core module"
boogle-web-starter/build.gradle.kts
plugins {
id("org.example.app-conventions")
}
dependencies {
api(project(":boogle-system"))
api(project(":boogle-logging"))
api(project(":boogle-quartz"))
}
description = "Web application starter module"
Confgiuring Settings with settings.gradle.kts
rootProject.name = "XunLuAdmin"
include(":boogle-core")
include(":boogle-system")
include(":boogle-web--starter")
include(":boogle-logging")
include(":boogle-generator")
include(":boogle-quartz")
include(":boogle-common")
Building the Executable JAR
./gradlew bootJar
In IntelliJ IDEA, run the Tasks > build > bootJar task from the Gradle panel.