diff --git a/build.gradle.kts b/build.gradle.kts index 2e1e303..060708e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,54 +1,14 @@ -plugins { - id("java") - id("io.spring.dependency-management") version "1.1.6" -} - allprojects { - apply(plugin = "java") - apply(plugin = "jacoco") - apply(plugin = "io.spring.dependency-management") - val versionFromProperty = "${project.property("version")}" val versionFromEnv: String? = System.getenv("VERSION") version = versionFromEnv ?: versionFromProperty group = "${project.property("group")}" - val targetJavaVersion = (project.property("jdk_version") as String).toInt() - val javaVersion = JavaVersion.toVersion(targetJavaVersion) - - java { - sourceCompatibility = javaVersion - targetCompatibility = javaVersion - - if (JavaVersion.current() < javaVersion) { - toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) - } - withJavadocJar() - withSourcesJar() - } - repositories { mavenCentral() maven(url = "https://nexus.sibmaks.ru/repository/maven-snapshots/") maven(url = "https://nexus.sibmaks.ru/repository/maven-releases/") } - dependencyManagement { - imports { - mavenBom("org.springframework.boot:spring-boot-dependencies:${project.property("lib_springboot_version")}") - } - } - - tasks.withType().configureEach { - // ensure that the encoding is set to UTF-8, no matter what the system default is - // this fixes some edge cases with special characters not displaying correctly - // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html - // If Javadoc is generated, this must be specified in that task too. - options.encoding = "UTF-8" - if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { - options.release = targetJavaVersion - } - } - -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 10e0929..e908998 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,4 @@ jdk_version=21 author=SibDevTools project_name=jolt group=com.github.sibdevtools.web.app -version=unspecified - -# spring libraries -lib_springboot_version=3.3.3 \ No newline at end of file +version=unspecified \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..e603620 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,38 @@ +[versions] +java = "21" + +spring-framework = "3.3.3" +spring-dependency-managment = "1.1.6" +gradle-node = "7.1.0" +node = "22.13.1" +npm = "11.1.0" + +jolt = "0.1.8" + +# service APIs deps +common-api = "0.0.2" +localization-api = "0.0.7" +error-api = "0.0.16" +web-app-api = "0.0.6" + +[libraries] +jolt = { module = "com.bazaarvoice.jolt:jolt-core", version.ref = "jolt"} + +common-api = { module = "com.github.sibdevtools:api-common", version.ref = "common-api" } +localization-api = { module = "com.github.sibdevtools:api-localization", version.ref = "localization-api" } +error-api = { module = "com.github.sibdevtools:api-error", version.ref = "error-api" } +web-app-api = { module = "com.github.sibdevtools:api-web-app", version.ref = "web-app-api" } + +[bundles] +service-api = [ + "common-api", + "localization-api", + "error-api", + "web-app-api" +] + +[plugins] +spring-framework-boot = { id = "org.springframework.boot", version.ref = "spring-framework" } +spring-dependency-managment = { id = "io.spring.dependency-management", version.ref = "spring-dependency-managment" } + +node = { id = "com.github.node-gradle.node", version.ref = "gradle-node" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 21980d6..e18bc25 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Mon Apr 10 16:28:10 MSK 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/web-app-frontend/build.gradle.kts b/web-app-frontend/build.gradle.kts index 5158919..d6ce2e7 100644 --- a/web-app-frontend/build.gradle.kts +++ b/web-app-frontend/build.gradle.kts @@ -1,22 +1,18 @@ import com.github.gradle.node.npm.task.NpmTask plugins { - id("com.github.node-gradle.node") version "7.0.2" + alias(libs.plugins.node) } node { - version.set("22.9.0") - npmVersion.set("10.8.3") + version = libs.versions.node.get() + npmVersion = libs.versions.npm.get() download.set(true) } -tasks.register("buildFrontend") { +tasks.register("build") { group = "build" description = "Builds the React frontend using npm." dependsOn("npmInstall") args.set(listOf("run", "build")) } - -tasks.named("build") { - dependsOn("buildFrontend") -} diff --git a/web-app-frontend/package-lock.json b/web-app-frontend/package-lock.json index 563df75..cec6e5f 100644 --- a/web-app-frontend/package-lock.json +++ b/web-app-frontend/package-lock.json @@ -1235,9 +1235,9 @@ } }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -1256,9 +1256,9 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -1722,9 +1722,9 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -1732,7 +1732,7 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -1746,7 +1746,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -1761,6 +1761,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/fast-deep-equal": { @@ -2228,9 +2232,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -2749,9 +2753,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -2999,9 +3003,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true }, "node_modules/picocolors": { diff --git a/web-app/build.gradle.kts b/web-app/build.gradle.kts index 31dda27..acbdd55 100644 --- a/web-app/build.gradle.kts +++ b/web-app/build.gradle.kts @@ -5,10 +5,13 @@ plugins { id("java") id("jacoco") id("maven-publish") + alias(libs.plugins.spring.dependency.managment) } dependencies { compileOnly("org.projectlombok:lombok") + compileOnly("jakarta.servlet:jakarta.servlet-api") + annotationProcessor("org.projectlombok:lombok") implementation("org.springframework:spring-context") @@ -16,15 +19,13 @@ dependencies { implementation("org.springframework:spring-web") implementation("org.springframework:spring-webmvc") implementation("org.springframework.boot:spring-boot-autoconfigure") + implementation("org.springframework.boot:spring-boot-starter-validation") - implementation("com.bazaarvoice.jolt:jolt-core:${project.property("lib_jolt_version")}") + implementation(libs.jolt) implementation("jakarta.annotation:jakarta.annotation-api") - implementation("com.github.sibdevtools:api-common:${project.property("lib_api_common_version")}") - implementation("com.github.sibdevtools:api-error:${project.property("lib_api_error_version")}") - implementation("com.github.sibdevtools:api-localization:${project.property("lib_api_localization_version")}") - implementation("com.github.sibdevtools:api-web-app:${project.property("lib_api_web_app_version")}") + implementation(libs.bundles.service.api) testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.boot:spring-boot-starter-web") @@ -40,6 +41,36 @@ dependencies { testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") } +val targetJavaVersion = (libs.versions.java.get()).toInt() +val javaVersion = JavaVersion.toVersion(targetJavaVersion) + +java { + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } + withSourcesJar() +} + +dependencyManagement { + imports { + mavenBom("org.springframework.boot:spring-boot-dependencies:${libs.versions.spring.framework.get()}") + } +} + +tasks.withType().configureEach { + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + options.encoding = "UTF-8" + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + options.release = targetJavaVersion + } +} + tasks.withType { useJUnitPlatform() } @@ -69,9 +100,6 @@ tasks.jar { from("LICENSE") { rename { "${it}_${project.property("project_name")}" } } - from("LICENSE") { - rename { "${it}_${project.property("project_name")}" } - } manifest { attributes( mapOf( diff --git a/web-app/gradle.properties b/web-app/gradle.properties deleted file mode 100644 index 2e127ae..0000000 --- a/web-app/gradle.properties +++ /dev/null @@ -1,12 +0,0 @@ -# Build environment -## Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx2G - -# service deps -lib_api_common_version=0.0.2 -lib_api_error_version=0.0.16 -lib_api_localization_version=0.0.7 -lib_api_web_app_version=0.0.6 - -# deps -lib_jolt_version=0.1.8 \ No newline at end of file