152 lines
5.3 KiB
Groovy
152 lines
5.3 KiB
Groovy
plugins {
|
||
id 'java'
|
||
id 'org.springframework.boot' version '3.5.0'
|
||
id 'io.spring.dependency-management' version '1.1.7'
|
||
id 'org.flywaydb.flyway' version '10.4.1'
|
||
}
|
||
|
||
group = 'com.jambotronGroup'
|
||
version = '0.0.1-SNAPSHOT'
|
||
|
||
java {
|
||
toolchain {
|
||
// Устанавливаем актуальную LTS версию 21 для Spring Boot 3.5
|
||
languageVersion = JavaLanguageVersion.of(21)
|
||
}
|
||
}
|
||
|
||
repositories {
|
||
mavenCentral()
|
||
}
|
||
|
||
dependencies {
|
||
// Ядро Spring Boot
|
||
implementation 'org.springframework.boot:spring-boot-starter'
|
||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
||
implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
|
||
implementation 'org.springframework.boot:spring-boot-starter-websocket'
|
||
// --- НОВОЕ: Реактивная MongoDB 6.0 для метаданных PaaS ---
|
||
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'
|
||
|
||
// --- НОВОЕ: Docker API для управления контейнерами (Созидание) ---
|
||
// Ядро и API
|
||
implementation 'com.github.docker-java:docker-java-api:3.3.6'
|
||
implementation 'com.github.docker-java:docker-java-core:3.3.6'
|
||
|
||
// Тот самый транспорт, который решит проблему с unix-сокетом
|
||
implementation 'com.github.docker-java:docker-java-transport-zerodep:3.4.0'
|
||
|
||
// Spring Boot Starter для STOMP WebSockets
|
||
implementation 'org.springframework.boot:spring-boot-starter-websocket'
|
||
|
||
|
||
// Работа с SQL и PostgreSQL[cite: 3]
|
||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||
implementation 'org.postgresql:postgresql:42.6.0'
|
||
implementation 'org.flywaydb:flyway-core'
|
||
implementation "org.flywaydb:flyway-database-postgresql:10.4.1"
|
||
implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'
|
||
|
||
// MongoDB
|
||
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
|
||
|
||
// Безопасность и JWT
|
||
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
|
||
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
|
||
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
|
||
|
||
// Lombok с поддержкой JDK 21
|
||
compileOnly 'org.projectlombok:lombok:1.18.34'
|
||
annotationProcessor 'org.projectlombok:lombok:1.18.34'
|
||
testCompileOnly 'org.projectlombok:lombok:1.18.34'
|
||
testAnnotationProcessor 'org.projectlombok:lombok:1.18.34'
|
||
|
||
// Spring AI и дополнительные утилиты
|
||
implementation 'org.springframework.ai:spring-ai-zhipuai-spring-boot-starter:1.0.0-M6'
|
||
implementation 'com.google.guava:guava:33.4.8-jre'
|
||
implementation 'org.apache.commons:commons-exec:1.3'
|
||
implementation 'io.micrometer:micrometer-core:1.12.0'
|
||
|
||
// Тестирование
|
||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||
testImplementation 'io.projectreactor:reactor-test'
|
||
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
|
||
|
||
// Временный фикс для обратной совместимости (если требуется)
|
||
implementation 'org.springframework:spring-mock:2.0.8'
|
||
}
|
||
|
||
apply plugin: 'io.spring.dependency-management'
|
||
dependencyManagement {
|
||
imports {
|
||
mavenBom ("org.springframework.ai:spring-ai-retry:1.0.0")
|
||
}
|
||
}
|
||
|
||
// --- Задачи сборки Angular (Твой монолитный код существования) ---
|
||
|
||
import org.apache.tools.ant.taskdefs.condition.Os
|
||
|
||
tasks.register("bootRun_Dev") {
|
||
group = "_jambotron_build"
|
||
description = "Runs the Spring Boot application with the dev profile"
|
||
doFirst {
|
||
tasks.bootRun.configure {
|
||
systemProperty("spring.profiles.active", "dev")
|
||
}
|
||
}
|
||
finalizedBy("bootRun")
|
||
}
|
||
|
||
tasks.register('buildAngular_dev', Exec) {
|
||
group = "_jambotron_build"
|
||
workingDir './jambotron-ui'
|
||
executable = Os.isFamily(Os.FAMILY_WINDOWS) ? 'npm.cmd' : 'npm'
|
||
args = ['run', 'build_dev']
|
||
}
|
||
|
||
tasks.register('buildAngular_prod', Exec) {
|
||
group = "_jambotron_build"
|
||
workingDir './jambotron-ui'
|
||
executable = Os.isFamily(Os.FAMILY_WINDOWS) ? 'npm.cmd' : 'npm'
|
||
args = ['run', 'build']
|
||
}
|
||
|
||
tasks.register('deleteStaticFolder_prod', Delete) {
|
||
group = "_jambotron_build"
|
||
dependsOn buildAngular_prod
|
||
delete "src/main/resources/static"
|
||
}
|
||
|
||
tasks.register('deleteStaticFolder_dev', Delete) {
|
||
group = "_jambotron_build"
|
||
dependsOn buildAngular_dev
|
||
delete "src/main/resources/static"
|
||
}
|
||
|
||
tasks.register('copyAngularBuild_prod', Copy) {
|
||
group = "_jambotron_build"
|
||
dependsOn deleteStaticFolder_prod
|
||
from 'jambotron-ui/dist/jambotron-ui/browser'
|
||
into "src/main/resources/static"
|
||
}
|
||
|
||
tasks.register('copyAngularBuild_dev', Copy) {
|
||
group = "_jambotron_build"
|
||
dependsOn deleteStaticFolder_dev
|
||
from 'jambotron-ui/dist/jambotron-ui'
|
||
into "src/main/resources/static"
|
||
}
|
||
|
||
processResources {
|
||
// В продакшн сборке всегда копируем фронтенд
|
||
if (!gradle.startParameter.taskNames.any { it.toLowerCase().contains("dev") }) {
|
||
dependsOn copyAngularBuild_prod
|
||
}
|
||
}
|
||
|
||
tasks.named('test') {
|
||
useJUnitPlatform()
|
||
} |