diff --git a/app/build.gradle b/app/build.gradle index 8907aab5..22e2ce0e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java-library' id 'org.springframework.boot' - id 'com.google.cloud.tools.jib' version '3.5.3' + alias(libs.plugins.jib) } dependencies { @@ -22,7 +22,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-restclient' implementation 'org.springframework.boot:spring-boot-starter-webmvc' implementation 'org.springframework.boot:spring-boot-starter-websocket' - implementation 'io.pebbletemplates:pebble-spring-boot-starter:4.1.1' + implementation(libs.pebble.spring.starter) developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2' @@ -34,8 +34,6 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-websocket-test' testImplementation 'org.springframework.boot:spring-boot-testcontainers' testImplementation 'org.testcontainers:testcontainers-junit-jupiter' - - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } bootRun { diff --git a/base/build.gradle b/base/build.gradle index 2340de9b..147d72d0 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -5,23 +5,22 @@ plugins { dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.modulith:spring-modulith-starter-core' - implementation 'org.jobrunr:jobrunr-spring-boot-4-starter:8.5.1' + implementation(libs.jobrunr.spring.starter) implementation 'org.apache.commons:commons-lang3' implementation 'com.fasterxml.jackson.core:jackson-core' // No idea? - runtimeOnly 'io.netty:netty-resolver-dns-native-macos:4.2.10.Final' + runtimeOnly(libs.netty.resolver.dns.native.macos) implementation 'org.springframework.ai:spring-ai-client-chat' implementation 'org.springframework.ai:spring-ai-starter-mcp-client' - implementation 'org.springaicommunity:spring-ai-agent-utils:0.6.0-SNAPSHOT' - implementation 'org.springaicommunity:tool-search-tool:2.0.1' - implementation 'org.springaicommunity:tool-searcher-lucene:2.0.1' + implementation(libs.spring.ai.agent.utils) + implementation(libs.spring.ai.tool.search) + implementation(libs.spring.ai.tool.search.lucene) runtimeOnly 'com.h2database:h2' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.awaitility:awaitility' testImplementation 'org.testcontainers:testcontainers-junit-jupiter' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/build.gradle b/build.gradle index 7b822418..4acdee2f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,5 @@ plugins { - id 'org.springframework.boot' version '4.0.3' apply false - id 'io.spring.dependency-management' version '1.1.7' apply false + alias(libs.plugins.spring.boot) apply false } description = 'JavaClaw' @@ -22,22 +21,15 @@ allprojects { // Explicitly configure only real projects configure(subprojects.findAll { it.buildFile.exists() }) { - apply plugin: 'io.spring.dependency-management' + plugins.withType(JavaPlugin).configureEach { + dependencies { + implementation(platform(libs.bom.spring.boot)) + implementation(platform(libs.bom.spring.ai)) + implementation(platform(libs.bom.spring.modulith)) - ext { - springAiVersion = '2.0.0-SNAPSHOT' - springModulithVersion = '2.0.3' - } - - dependencyManagement { - imports { - mavenBom "org.springframework.boot:spring-boot-dependencies:4.0.3" - mavenBom "org.springframework.ai:spring-ai-bom:2.0.0-SNAPSHOT" - mavenBom "org.springframework.modulith:spring-modulith-bom:2.0.3" + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } - } - plugins.withType(JavaPlugin) { java { toolchain { languageVersion = JavaLanguageVersion.of(25) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..5a569242 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,31 @@ +[versions] +spring-boot = "4.0.6" +tool-search = "2.1.0" +telegrambots = "9.5.0" +commonmark = "0.28.0" + +[libraries] +bom-spring-boot = { module = "org.springframework.boot:spring-boot-dependencies", version.ref = "spring-boot" } +bom-spring-ai = { module = "org.springframework.ai:spring-ai-bom", version = "2.0.0-M5" } +bom-spring-modulith = { module = "org.springframework.modulith:spring-modulith-bom", version = "2.0.6" } + +spring-ai-agent-utils = { module = "org.springaicommunity:spring-ai-agent-utils", version = "0.7.0" } +spring-ai-tool-search = { module = "org.springaicommunity:tool-search-tool", version.ref = "tool-search" } +spring-ai-tool-search-lucene = { module = "org.springaicommunity:tool-searcher-lucene", version.ref = "tool-search" } + +netty-resolver-dns-native-macos = { module = "io.netty:netty-resolver-dns-native-macos", version = "4.2.12.Final" } +jobrunr-spring-starter = { module = "org.jobrunr:jobrunr-spring-boot-4-starter", version = "8.6.0"} +pebble-spring-starter = { module = "io.pebbletemplates:pebble-spring-boot-starter", version = "4.1.1" } +java-discord-api = { module = "net.dv8tion:JDA", version = "6.4.1" } +playwright = { module = "com.microsoft.playwright:playwright", version = "1.52.0" } +telegrambots-client = { module = "org.telegram:telegrambots-client", version.ref = "telegrambots" } +telegrambots-springboot-longpolling-starter = { module = "org.telegram:telegrambots-springboot-longpolling-starter", version.ref = "telegrambots" } +commonmark-java = { module = "org.commonmark:commonmark", version.ref = "commonmark" } +commonmark-ext-gfm-strikethrough = { module = "org.commonmark:commonmark-ext-gfm-strikethrough", version.ref = "commonmark" } + +[bundles] + + +[plugins] +spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" } +jib = { id = "com.google.cloud.tools.jib", version = "3.5.3" } \ No newline at end of file diff --git a/plugins/brave/build.gradle b/plugins/brave/build.gradle index f8358567..70cbb648 100644 --- a/plugins/brave/build.gradle +++ b/plugins/brave/build.gradle @@ -5,9 +5,8 @@ plugins { dependencies { implementation project(':base') implementation 'org.springframework.boot:spring-boot-starter' - implementation 'org.springaicommunity:spring-ai-agent-utils:0.6.0-SNAPSHOT' + implementation(libs.spring.ai.agent.utils) testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-restclient-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/plugins/discord/build.gradle b/plugins/discord/build.gradle index 67184a21..62c076d6 100644 --- a/plugins/discord/build.gradle +++ b/plugins/discord/build.gradle @@ -5,8 +5,7 @@ plugins { dependencies { implementation project(':base') implementation 'org.springframework.boot:spring-boot-starter' - implementation 'net.dv8tion:JDA:6.1.1' + implementation(libs.java.discord.api) testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/plugins/playwright/build.gradle b/plugins/playwright/build.gradle index ab0fac1c..004e858e 100644 --- a/plugins/playwright/build.gradle +++ b/plugins/playwright/build.gradle @@ -6,8 +6,7 @@ dependencies { implementation project(':base') implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.ai:spring-ai-client-chat' - implementation 'com.microsoft.playwright:playwright:1.52.0' + implementation(libs.playwright) testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/plugins/telegram/build.gradle b/plugins/telegram/build.gradle index 9692a490..903baa52 100644 --- a/plugins/telegram/build.gradle +++ b/plugins/telegram/build.gradle @@ -5,12 +5,10 @@ plugins { dependencies { implementation project(':base') implementation 'org.springframework.boot:spring-boot-starter' - implementation 'org.telegram:telegrambots-springboot-longpolling-starter:9.4.0' - implementation 'org.telegram:telegrambots-client:9.4.0' - - implementation 'org.commonmark:commonmark:0.21.0' - implementation 'org.commonmark:commonmark-ext-gfm-strikethrough:0.21.0' + implementation(libs.telegrambots.client) + implementation(libs.telegrambots.springboot.longpolling.starter) + implementation(libs.commonmark.java) + implementation(libs.commonmark.ext.gfm.strikethrough) testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } \ No newline at end of file diff --git a/providers/anthropic/build.gradle b/providers/anthropic/build.gradle index 4c45e2b8..5c80063b 100644 --- a/providers/anthropic/build.gradle +++ b/providers/anthropic/build.gradle @@ -8,5 +8,4 @@ dependencies { implementation 'org.springframework.ai:spring-ai-starter-model-anthropic' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/providers/google/build.gradle b/providers/google/build.gradle index c0792c2e..b74f1158 100644 --- a/providers/google/build.gradle +++ b/providers/google/build.gradle @@ -8,5 +8,4 @@ dependencies { implementation 'org.springframework.ai:spring-ai-starter-model-google-genai' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/providers/ollama/build.gradle b/providers/ollama/build.gradle index e4370834..2a082562 100644 --- a/providers/ollama/build.gradle +++ b/providers/ollama/build.gradle @@ -8,5 +8,4 @@ dependencies { implementation 'org.springframework.ai:spring-ai-starter-model-ollama' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/providers/openai/build.gradle b/providers/openai/build.gradle index 1bd8de56..3a4d1108 100644 --- a/providers/openai/build.gradle +++ b/providers/openai/build.gradle @@ -8,5 +8,4 @@ dependencies { implementation 'org.springframework.ai:spring-ai-starter-model-openai' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' }