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 для управления контейнерами (Созидание) --- implementation 'com.github.docker-java:docker-java-core:3.3.6' implementation 'com.github.docker-java:docker-java-transport-httpclient5:3.3.6' // Работа с 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() }