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.