Agent Skillsnixopus/nixopus › java-deploy

java-deploy

GitHub

用于构建和部署Java应用,支持Maven/Gradle及Spring Boot等框架。涵盖版本检测、构建命令、端口识别、Dockerfile生成及缓存优化,适用于Java项目的发布流程。

api/skills/java-deploy/SKILL.md nixopus/nixopus

Trigger Scenarios

需要构建或部署Java项目时 检测到pom.xml或build.gradle文件

Install

npx skills add nixopus/nixopus --skill java-deploy -g -y
More Options

Non-standard path

npx skills add https://github.com/nixopus/nixopus/tree/master/api/skills/java-deploy -g -y

Use without installing

npx skills use nixopus/nixopus@java-deploy

指定 Agent (Claude Code)

npx skills add nixopus/nixopus --skill java-deploy -a claude-code -g -y

安装 repo 全部 skill

npx skills add nixopus/nixopus --all -g -y

预览 repo 内 skill

npx skills add nixopus/nixopus --list

SKILL.md

Frontmatter
{
    "name": "java-deploy",
    "metadata": {
        "version": "1.0"
    },
    "description": "Build and deploy Java applications — Maven, Gradle, Spring Boot, version detection, and Dockerfile patterns. Use when deploying a Java project, or when pom.xml or build.gradle is detected."
}

Java Deployment

Detection

Project is Java if:

  • Maven: pom.xml exists at the root
  • Gradle: gradlew or build.gradle / build.gradle.kts exists at the root

Versions

Java / JDK

  1. pom.xmlmaven.compiler.source or maven.compiler.target
  2. build.gradlesourceCompatibility or JavaLanguageVersion
  3. .sdkmanrc or .java-version file
  4. Defaults to 21

Gradle

Read from gradle/wrapper/gradle-wrapper.propertiesdistributionUrl.

Build

Maven

  • mvn -B package -DskipTests
  • Output: target/<artifact-id>-<version>.jar
  • Spring Boot: target/*.jar (fat JAR)
  • Offline deps: mvn -B dependency:go-offline for layer caching

Gradle

  • ./gradlew build -x test (prefer wrapper when gradlew exists)
  • Use --no-daemon in Docker
  • Output: build/libs/<name>-<version>.jar
  • Spring Boot: build/libs/*.jar (fat JAR)
  • Warm deps: ./gradlew dependencies --no-daemon for layer caching

Start Command

  • java -jar <jar-file>
  • Spring Boot: java -jar app.jar

Port Detection

  1. server.port in application.properties or application.yml
  2. PORT or SERVER_PORT environment
  3. Spring Boot default: 8080
  4. Default: 8080

Framework Detection

Dependency / config Framework
spring-boot-starter-web Spring Boot
spring-boot-starter-webflux Spring Boot (reactive)
quarkus Quarkus
micronaut Micronaut
jakarta.servlet Jakarta EE / Servlet

Spring Boot

  • Fat JAR includes embedded Tomcat
  • Config: application.properties, application.yml, application-*.yml

Install Stage Optimization

  • Maven: pom.xml, pom.xml children (multi-module)
  • Gradle: build.gradle, build.gradle.kts, settings.gradle, gradlew, gradle/wrapper/*
  • Then: src/

Caching

Use BuildKit cache mounts:

Gradle:

RUN --mount=type=cache,target=/root/.gradle \
    ./gradlew build -x test --no-daemon

Maven:

RUN --mount=type=cache,target=/root/.m2/repository \
    mvn -B package -DskipTests

Base Images

Stage Image
Build (Maven) eclipse-temurin:21-jdk-alpine or maven:3-eclipse-temurin-21
Build (Gradle) eclipse-temurin:21-jdk-alpine
Runtime eclipse-temurin:21-jre-alpine or amazoncorretto:21-alpine

Use JRE (not JDK) for runtime.

Dockerfile Patterns

Maven + Spring Boot

FROM eclipse-temurin:21-jdk-alpine AS build
WORKDIR /app
COPY pom.xml ./
RUN mvn -B dependency:go-offline
COPY src ./src
RUN mvn -B package -DskipTests

FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

Gradle + Spring Boot

FROM eclipse-temurin:21-jdk-alpine AS build
WORKDIR /app
COPY gradlew ./
COPY gradle gradle
COPY build.gradle settings.gradle ./
RUN ./gradlew dependencies --no-daemon
COPY src ./src
RUN ./gradlew build -x test --no-daemon

FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

Simple Maven (no Spring Boot)

FROM eclipse-temurin:21-jdk-alpine AS build
WORKDIR /app
COPY pom.xml ./
RUN mvn -B dependency:go-offline
COPY src ./src
RUN mvn -B package -DskipTests

FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

Gotchas

  • Gradle wrapper gradlew must have execute permission — add RUN chmod +x gradlew in the Dockerfile if builds fail with permission denied
  • --no-daemon is essential for Gradle in Docker — the daemon persists between builds, wastes memory, and can hang
  • Spring Boot fat JAR glob target/*.jar may match multiple JARs (sources, javadoc) — use maven-jar-plugin with a fixed finalName or be specific with the path
  • Use JRE (not JDK) for the runtime stage — JDK adds ~200MB of unnecessary build tools
  • JAVA_TOOL_OPTIONS affects all stages including runtime — unset it after the build stage if used for build-only JVM flags

Version History

  • cf05d97 Current 2026-08-20 14:52

Same Skill Collection

api/skills/api-catalog/SKILL.md
api/skills/caddyfile-generation/SKILL.md
api/skills/compose-setup/SKILL.md
api/skills/container-resource-tuning/SKILL.md
api/skills/cpp-deploy/SKILL.md
api/skills/database-migration/SKILL.md
api/skills/deno-deploy/SKILL.md
api/skills/deploy-delegation/SKILL.md
api/skills/deploy-flow/SKILL.md
api/skills/deployment-analysis/SKILL.md
api/skills/diagnostic-workflow/SKILL.md
api/skills/dockerfile-generation/SKILL.md
api/skills/dockerignore-generation/SKILL.md
api/skills/domain-attachment/SKILL.md
api/skills/domain-tls-routing/SKILL.md
api/skills/dotnet-deploy/SKILL.md
api/skills/elixir-deploy/SKILL.md
api/skills/failure-diagnosis/SKILL.md
api/skills/github-onboarding/SKILL.md
api/skills/github-workflow/SKILL.md
api/skills/gleam-deploy/SKILL.md
api/skills/go-deploy/SKILL.md
api/skills/incident-response/SKILL.md
api/skills/machine-ops/SKILL.md
api/skills/mcp-integrations/SKILL.md
api/skills/monorepo-strategy/SKILL.md
api/skills/nixopus-docs/SKILL.md
api/skills/node-deploy/SKILL.md
api/skills/onboarding/SKILL.md
api/skills/php-deploy/SKILL.md
api/skills/post-deploy-verification/SKILL.md
api/skills/pre-deploy-checklist/SKILL.md
api/skills/python-deploy/SKILL.md
api/skills/rollback-strategy/SKILL.md
api/skills/ruby-deploy/SKILL.md
api/skills/rust-deploy/SKILL.md
api/skills/self-heal/SKILL.md
api/skills/shell-deploy/SKILL.md
api/skills/static-deploy/SKILL.md

Metadata

Files
0
Version
cf05d97
Hash
02ea4d10
Indexed
2026-08-20 14:52

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-29 23:16
浙ICP备14020137号-1 $방문자$