diff --git a/mateclaw-plugin-api/pom.xml b/mateclaw-plugin-api/pom.xml index 0221ea40..d1101b7a 100644 --- a/mateclaw-plugin-api/pom.xml +++ b/mateclaw-plugin-api/pom.xml @@ -4,36 +4,21 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - vip.mate + + vip.mate + mateclaw + ${revision} + ../pom.xml + + mateclaw-plugin-api - 1.1.0-SNAPSHOT jar MateClaw Plugin API - Plugin SDK contract for MateClaw — external plugins depend only on this module - - - 21 - 21 - 21 - UTF-8 - 1.1.4 - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - + Plugin SDK contract for MateClaw - external plugins depend only on this module - + org.springframework.ai spring-ai-model @@ -44,7 +29,6 @@ org.slf4j slf4j-api - 2.0.16 provided @@ -52,16 +36,7 @@ com.fasterxml.jackson.core jackson-databind - 2.18.3 provided - - - - spring-milestones - https://repo.spring.io/milestone - false - - diff --git a/mateclaw-plugin-sample/pom.xml b/mateclaw-plugin-sample/pom.xml index a9149840..66277da1 100644 --- a/mateclaw-plugin-sample/pom.xml +++ b/mateclaw-plugin-sample/pom.xml @@ -4,40 +4,24 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - vip.mate + + vip.mate + mateclaw + ${revision} + ../pom.xml + + mateclaw-plugin-sample - 1.0.0 jar MateClaw Sample Plugin A sample plugin demonstrating the MateClaw Plugin SDK - - 21 - 21 - 21 - UTF-8 - 1.1.4 - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - vip.mate mateclaw-plugin-api - 1.1.0-SNAPSHOT provided @@ -52,16 +36,7 @@ org.slf4j slf4j-api - 2.0.16 provided - - - - spring-milestones - https://repo.spring.io/milestone - false - - diff --git a/mateclaw-server/Dockerfile b/mateclaw-server/Dockerfile index d6ec4146..05963794 100644 --- a/mateclaw-server/Dockerfile +++ b/mateclaw-server/Dockerfile @@ -35,28 +35,29 @@ FROM maven:3.9-eclipse-temurin-21 AS builder # Optional Maven extra flags passed at build time. # Set MAVEN_FLAGS=-Paliyun-first in .env (or via --build-arg) to put Aliyun -# repos first — speeds up builds dramatically inside mainland China. +# repos first. This speeds up builds inside mainland China. ARG MAVEN_FLAGS="" # Inject mirror settings to avoid Maven Central timeouts in restricted networks COPY mateclaw-server/settings.xml /root/.m2/settings.xml -# Build and install plugin-api into the local Maven cache first -WORKDIR /plugin-api -COPY mateclaw-plugin-api/pom.xml ./pom.xml -COPY mateclaw-plugin-api/src ./src -RUN mvn install -Dmaven.test.skip=true -q ${MAVEN_FLAGS} - -# Pre-fetch mateclaw-server dependencies (uses mirror, so this won't hang) +# Copy the root parent plus module POMs first for Docker layer caching. WORKDIR /build -COPY mateclaw-server/pom.xml . -RUN mvn dependency:go-offline -q ${MAVEN_FLAGS} +COPY pom.xml ./pom.xml +COPY mateclaw-plugin-api/pom.xml mateclaw-plugin-api/pom.xml +COPY mateclaw-server/pom.xml mateclaw-server/pom.xml +COPY mateclaw-plugin-sample/pom.xml mateclaw-plugin-sample/pom.xml + +# Pre-fetch backend dependencies through the reactor so the parent POM, +# dependencyManagement, and internal module versions all resolve consistently. +RUN mvn -pl mateclaw-server -am dependency:go-offline -q ${MAVEN_FLAGS} # Copy backend source and inject pre-built frontend into the right classpath location -COPY mateclaw-server/src ./src -COPY --from=frontend-builder /static ./src/main/resources/static +COPY mateclaw-plugin-api/src mateclaw-plugin-api/src +COPY mateclaw-server/src mateclaw-server/src +COPY --from=frontend-builder /static mateclaw-server/src/main/resources/static -RUN mvn package -Dmaven.test.skip=true -q ${MAVEN_FLAGS} +RUN mvn -pl mateclaw-server -am package -Dmaven.test.skip=true -q ${MAVEN_FLAGS} # Stage 3 — Runtime # @@ -65,11 +66,11 @@ RUN mvn package -Dmaven.test.skip=true -q ${MAVEN_FLAGS} # pre-installed. This avoids the `playwright install` step and the Alpine/musl # incompatibility that blocks browser_use on minimal images. # -# We pin to the exact Playwright version declared in pom.xml (1.52.0). If you +# We pin to the exact Playwright version declared in the root pom.xml. If you # bump the Java dependency, bump this tag in lockstep — Microsoft rebuilds each # tag with the matching driver, so mismatched versions cause the java driver to # re-download browsers at runtime (defeating the whole point of this image). -FROM mcr.microsoft.com/playwright:v1.52.0-noble +FROM mcr.microsoft.com/playwright:v1.59.0-noble WORKDIR /app # JDK 21 is NOT part of the base image (it ships Node for the JS driver). @@ -106,7 +107,7 @@ ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \ TZ=Asia/Shanghai \ JAVA_TOOL_OPTIONS="-Duser.timezone=Asia/Shanghai" -COPY --from=builder /build/target/*.jar app.jar +COPY --from=builder /build/mateclaw-server/target/*.jar app.jar EXPOSE 18088 EXPOSE 1455 ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=mysql", "app.jar"] diff --git a/mateclaw-server/pom.xml b/mateclaw-server/pom.xml index 81cf535f..0fc31c02 100644 --- a/mateclaw-server/pom.xml +++ b/mateclaw-server/pom.xml @@ -4,70 +4,33 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - vip.mate + + vip.mate + mateclaw + ${revision} + ../pom.xml + + mateclaw-server - 1.4.0-SNAPSHOT jar MateClaw Server MateClaw - Java+Vue Personal AI Assistant powered by Spring AI Alibaba - - org.springframework.boot - spring-boot-starter-parent - 3.5.14 - - - - - 21 - UTF-8 - - 1.1.6 - - 1.1.2.3 - 3.5.16 - 5.8.26 - 2.8.16 - 0.12.6 - - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - org.springdoc - springdoc-openapi-bom - ${springdoc.version} - pom - import - - - - vip.mate mateclaw-plugin-api - 1.1.0-SNAPSHOT - + org.springframework.boot spring-boot-starter-web - + org.springframework.boot spring-boot-starter-actuator @@ -75,14 +38,13 @@ com.alibaba.cloud.ai spring-ai-alibaba-starter-dashscope - ${spring-ai-alibaba.version} - + org.springframework.boot @@ -91,11 +53,10 @@ - + com.alibaba.cloud.ai spring-ai-alibaba-graph-core - ${spring-ai-alibaba.version} @@ -104,16 +65,15 @@ spring-ai-openai - + org.springframework.ai spring-ai-anthropic - + org.springframework.ai @@ -126,31 +86,29 @@ - + com.h2database h2 runtime - + com.mysql mysql-connector-j runtime - + com.baomidou mybatis-plus-spring-boot3-starter - ${mybatis-plus.version} - + com.baomidou mybatis-plus-jsqlparser - ${mybatis-plus.version} @@ -163,55 +121,49 @@ io.jsonwebtoken jjwt-api - ${jjwt.version} io.jsonwebtoken jjwt-impl - ${jjwt.version} runtime io.jsonwebtoken jjwt-jackson - ${jjwt.version} runtime - + org.springdoc springdoc-openapi-starter-webmvc-ui - + cn.hutool hutool-all - ${hutool.version} - + com.dingtalk.open dingtalk-stream - 1.3.12 - + com.larksuite.oapi oapi-sdk - 2.6.1 - + com.github.ben-manes.caffeine caffeine - + org.yaml snakeyaml @@ -228,28 +180,24 @@ com.google.zxing core - 3.5.4 com.google.zxing javase - 3.5.4 com.microsoft.playwright playwright - 1.59.0 - + net.dv8tion JDA - 6.4.1 - + club.minnced opus-java @@ -257,27 +205,24 @@ - + org.springframework.boot spring-boot-starter-websocket - + com.slack.api slack-api-client - 1.48.1 com.slack.api bolt-socket-mode - 1.48.1 org.glassfish.tyrus.bundles tyrus-standalone-client - 2.2.2 @@ -288,7 +233,6 @@ org.apache.poi poi-ooxml - 5.4.1 @@ -302,53 +246,47 @@ org.apache.xmlgraphics batik-transcoder - 1.19 org.apache.xmlgraphics batik-codec - 1.19 - + org.jsoup jsoup - 1.22.2 - + org.apache.tika tika-core - 3.3.0 org.apache.tika tika-parser-pdf-module - 3.3.0 org.apache.tika tika-parser-microsoft-module - 3.3.0 @@ -413,33 +345,30 @@ test - com.tngtech.archunit archunit-junit5 - 1.3.0 test net.javacrumbs.shedlock shedlock-spring - 7.7.0 net.javacrumbs.shedlock shedlock-provider-jdbc-template - 7.7.0 - - - - maven-central - Maven Central - https://repo.maven.apache.org/maven2 - true - false - - - - google-maven-central - Google Maven Central Mirror - https://maven-central.storage-download.googleapis.com/maven2 - true - false - - - - aliyun-public - Aliyun Public - https://maven.aliyun.com/repository/public - true - false - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - true - false - - - - aliyun-spring - Aliyun Spring Mirror - https://maven.aliyun.com/repository/spring - true - false - - - - - - - maven-central - Maven Central - https://repo.maven.apache.org/maven2 - true - false - - - google-maven-central - Google Maven Central Mirror - https://maven-central.storage-download.googleapis.com/maven2 - true - false - - - aliyun-public - Aliyun Public - https://maven.aliyun.com/repository/public - true - false - - - - - - aliyun-first - - - aliyun-public-first - https://maven.aliyun.com/repository/public - true - false - - - aliyun-spring-first - https://maven.aliyun.com/repository/spring - true - false - - - - - aliyun-public-first - https://maven.aliyun.com/repository/public - true - false - - - - + + mateclaw-plugin-api + mateclaw-server + mateclaw-plugin-sample + + + + + 1.4.0-SNAPSHOT + + + 21 + ${java.version} + ${java.version} + ${java.version} + UTF-8 + + + 3.5.14 + 1.1.6 + 1.1.2.3 + 2.8.16 + + + 3.5.16 + 5.8.26 + 0.12.6 + 2.0.16 + 2.18.3 + + + 1.3.12 + 2.6.1 + 6.4.1 + 1.48.1 + + + 3.5.4 + 1.59.0 + 2.2.2 + + + 5.4.1 + 1.19 + 1.22.2 + 3.3.0 + 10.2.0 + 0.28.0 + 1.3.0 + 7.7.0 + 1.5.3 + 3.0.7 + 4.1.1 + + + 3.14.1 + 3.8.1 + 3.5.5 + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + org.springdoc + springdoc-openapi-bom + ${springdoc.version} + pom + import + + + + + + vip.mate + mateclaw-plugin-api + ${revision} + + + vip.mate + mateclaw-server + ${revision} + + + vip.mate + mateclaw-plugin-sample + ${revision} + + + + + com.alibaba.cloud.ai + spring-ai-alibaba-starter-dashscope + ${spring-ai-alibaba.version} + + + com.alibaba.cloud.ai + spring-ai-alibaba-graph-core + ${spring-ai-alibaba.version} + + + + + com.baomidou + mybatis-plus-spring-boot3-starter + ${mybatis-plus.version} + + + com.baomidou + mybatis-plus-jsqlparser + ${mybatis-plus.version} + + + + + cn.hutool + hutool-all + ${hutool.version} + + + io.jsonwebtoken + jjwt-api + ${jjwt.version} + + + io.jsonwebtoken + jjwt-impl + ${jjwt.version} + + + io.jsonwebtoken + jjwt-jackson + ${jjwt.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + + com.dingtalk.open + dingtalk-stream + ${dingtalk-stream.version} + + + com.larksuite.oapi + oapi-sdk + ${lark-oapi.version} + + + com.google.zxing + core + ${zxing.version} + + + com.google.zxing + javase + ${zxing.version} + + + com.microsoft.playwright + playwright + ${playwright.version} + + + net.dv8tion + JDA + ${jda.version} + + + com.slack.api + slack-api-client + ${slack.version} + + + com.slack.api + bolt-socket-mode + ${slack.version} + + + org.glassfish.tyrus.bundles + tyrus-standalone-client + ${tyrus.version} + + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + org.apache.xmlgraphics + batik-transcoder + ${batik.version} + + + org.apache.xmlgraphics + batik-codec + ${batik.version} + + + org.jsoup + jsoup + ${jsoup.version} + + + org.apache.tika + tika-core + ${tika.version} + + + org.apache.tika + tika-parser-pdf-module + ${tika.version} + + + org.apache.tika + tika-parser-microsoft-module + ${tika.version} + + + org.xhtmlrenderer + flying-saucer-pdf + ${flying-saucer.version} + + + org.commonmark + commonmark + ${commonmark.version} + + + org.commonmark + commonmark-ext-gfm-tables + ${commonmark.version} + + + org.commonmark + commonmark-ext-yaml-front-matter + ${commonmark.version} + + + org.commonmark + commonmark-ext-gfm-strikethrough + ${commonmark.version} + + + org.commonmark + commonmark-ext-autolink + ${commonmark.version} + + + + + com.tngtech.archunit + archunit-junit5 + ${archunit.version} + + + net.javacrumbs.shedlock + shedlock-spring + ${shedlock.version} + + + net.javacrumbs.shedlock + shedlock-provider-jdbc-template + ${shedlock.version} + + + + + org.jgrapht + jgrapht-core + ${jgrapht.version} + + + org.apache.pdfbox + pdfbox + ${pdfbox.version} + + + io.pebbletemplates + pebble + ${pebble.version} + + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + org.apache.maven.plugins + maven-dependency-plugin + ${maven-dependency-plugin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.release} + ${project.build.sourceEncoding} + + + + + + + + + maven-central + Maven Central + https://repo.maven.apache.org/maven2 + true + false + + + google-maven-central + Google Maven Central Mirror + https://maven-central.storage-download.googleapis.com/maven2 + true + false + + + aliyun-public + Aliyun Public + https://maven.aliyun.com/repository/public + true + false + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + true + false + + + aliyun-spring + Aliyun Spring Mirror + https://maven.aliyun.com/repository/spring + true + false + + + + + + + maven-central + Maven Central + https://repo.maven.apache.org/maven2 + true + false + + + google-maven-central + Google Maven Central Mirror + https://maven-central.storage-download.googleapis.com/maven2 + true + false + + + aliyun-public + Aliyun Public + https://maven.aliyun.com/repository/public + true + false + + + + + + + aliyun-first + + + aliyun-public-first + https://maven.aliyun.com/repository/public + true + false + + + aliyun-spring-first + https://maven.aliyun.com/repository/spring + true + false + + + + + aliyun-public-first + https://maven.aliyun.com/repository/public + true + false + + + + +