Files
jambotron/build.gradle
T
Liosha bae059df3f adjast wss + docker logs
ZerodepDockerHttpClient
2026-05-11 22:13:12 +03:00

152 lines
5.3 KiB
Groovy
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()
}