1JPM: A Maven/Gradle alternative in a single Java file

Positioning vs Existing Build Tools

  • 1JPM is pitched as a Maven/Gradle alternative that lives in a single Java file checked into the repo and run with java JPM.java, avoiding separate installation.
  • Compared to bld and similar Java-based tools, differences noted:
    • 1JPM supports Java 8+, while some competitors target Java 17+.
    • It is literally a single file, which has both advantages (portability, auditability) and drawbacks (code size, feature limits).
  • Some argue Maven/Gradle wrappers already solve versioning and install issues, so the value-add is limited for many teams.

Simplicity, Single-File Approach & Java-as-Config

  • Several commenters like the “one file” aesthetic and the idea of using plain Java for builds, benefiting from IDE autocomplete, refactoring, and type safety.
  • Others warn that using a full programming language for builds is what makes them fragile and overcomplicated in the first place.
  • There is interest in tools that feel more intuitive than Gradle’s execution model, especially for small or occasional Java users.

Gradle vs Maven Debate

  • Many describe Gradle as powerful but exceedingly complex, “magical,” and prone to fragile builds and backward-incompatible changes.
  • Maven is praised for stability, predictable behavior, and easy static inspection, but criticized for weaker incremental builds and needing plugins or scripts for nonstandard workflows.
  • Some see Gradle (and Bazel) as necessary for very complex, polyglot enterprise builds; others feel Maven plus plugins is enough.

Transitive Dependencies & Feature Gaps

  • 1JPM initially lacked transitive dependency resolution; later comments mention an early implementation that may still be imperfect.
  • Multiple commenters view transitive dependency handling as “table stakes” for any serious JVM build tool.
  • Others argue transitive deps cause bloat and conflicts and would prefer simpler tools with more manual control.

Security and Declarative vs Imperative Builds

  • Concern: to read basic project metadata in 1JPM (or Gradle-like tools), you must run arbitrary code, complicating security review and automated analysis.
  • Counterpoints:
    • All build systems allow arbitrary code somewhere (e.g., plugins).
    • Maven’s declarative XML enables static parsing and plugin whitelisting, which is harder or impossible with Turing-complete scripts.

Ecosystem Fit and Alternatives

  • Many doubt a new tool can rival decades of Maven/Gradle plugins but still welcome experimentation, especially for simple or personal projects.
  • Related alternatives mentioned: bld, jeka, polyglot-maven, Ant, Makefiles, shell scripts plus dependency resolvers (e.g., coursier), and older single-file Java build scripts.