Skip to content

Conversation

@rohansen856
Copy link

Summary

This PR introduces a JavaBinaryBuilder plugin following the same patterns and lifecycle as the existing GoBinaryBuilder.
The goal is to support Java repositories by producing a versioned .jar artifact that can be uploaded to GitHub Releases in a consistent way.

Currently implemented things

  • Auto-detect build system: Maven (pom.xml) or Gradle (build.gradle / build.gradle.kts)

  • JAR is the standard packaged output for Java projects and is the closest equivalent “release artifact” for this builder system, so the “binary” for Java is treated as a JAR (not a native ELF executable).

  • Builds are executed inside Docker containers using the repo mounted into /app, as it ensures reproducible builds across dev machines + CI environments and follows the same execution model as the Go builder.

  • the default Docker image is Maven + Temurin JDK 17 as Java 17 is a stable LTS choice and Maven is common. see: https://hub.docker.com/layers/library/maven/3.9-eclipse-temurin-17/images/sha256-078164c49b664077cd330ad6cd367eb3baa5188380d68c82bf364c04c11748e9

Questions before i finalize the PR

  • What should "Java binary" mean for this system... plain jar or fat/uber jar
  • when multiple jars exist, should we prioritize shaded jars / Spring Boot jars?

So, Once the above decisions are confirmed, I will update the builder into a finalized implementation and push the changes.
PS, I havent yet manually tested this on a java project, but will do thst once the code is ready.

cc @pleia2 @rposts

Signed-off-by: rohansen856 <rohansen856@gmail.com>
@rohansen856 rohansen856 requested a review from a team as a code owner January 25, 2026 22:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant