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 { languageVersion = JavaLanguageVersion.of(24) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.projectlombok:lombok:1.18.26' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0' implementation 'jakarta.validation:jakarta.validation-api:3.0.2' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'io.jsonwebtoken:jjwt-api:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' // For JSON serialization/deserialization implementation 'org.postgresql:postgresql:42.6.0' implementation 'org.flywaydb:flyway-core' implementation("org.flywaydb:flyway-database-postgresql:10.4.1") implementation 'org.springframework.ai:spring-ai-zhipuai-spring-boot-starter:1.0.0-M6' implementation 'org.springframework:spring-mock:2.0.8' // Apache Commons Exec for process execution implementation 'org.apache.commons:commons-exec:1.3' implementation 'com.google.guava:guava:33.4.8-jre' implementation 'io.micrometer:micrometer-core:1.12.0' implementation 'org.springframework.boot:spring-boot-starter-actuator' } apply plugin: 'io.spring.dependency-management' dependencyManagement { imports { mavenBom ("org.springframework.ai:spring-ai-retry:1.0.0") } } apply plugin: 'java' 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" description = "Builds the Angular application in development mode" workingDir './jambotron-ui' // Path to your Angular project (e.g., './angular-app') executable 'npm.cmd' // Use 'npm' for Unix-like systems or 'npm.cmd' for Windows // Your Angular build command //do not forget build_dev used port 8082 with proxy for connect to backend rest api args = ['run', 'build_dev'] } tasks.register('buildAngular_prod', Exec) { group = "_jambotron_build" workingDir './jambotron-ui' // Path to your Angular project (e.g., './angular-app') executable 'npm.cmd' // Use 'npm' for Unix-like systems or 'npm.cmd' for Windows // Your Angular build command args = ['run', 'build'] } tasks.register('deleteStaticFolder_prod', Delete) { group = "_jambotron_build" dependsOn buildAngular_prod def dirName = "src/main/resources/static" file(dirName).list().each { f -> delete "${dirName}/${f}" } } tasks.register('deleteStaticFolder_dev', Delete) { group = "_jambotron_build" dependsOn buildAngular_dev def dirName = "src/main/resources/static" file(dirName).list().each { f -> delete "${dirName}/${f}" } } tasks.register('copyAngularBuild_prod', Copy) { group = "_jambotron_build" dependsOn deleteStaticFolder_prod from 'jambotron-ui/dist/jambotron-ui' // Path to your Angular dist folder into "src/main/resources/static" // Path INSIDE the WAR } tasks.register('copyAngularBuild_dev', Copy) { group = "_jambotron_build" dependsOn deleteStaticFolder_dev from 'jambotron-ui/dist/jambotron-ui' // Path to your Angular dist folder into "src/main/resources/static" // Path INSIDE the WAR } tasks.named('test') { useJUnitPlatform() }