- Author and Title: By Ethan McCue. The title is a
? ->!of a recent Reddit thread and a continuation of a series of posts. - Purpose: Go over Maven/Gradle alternatives in a Reddit thread, explain why they don't meet the need, give a status update on work, and ask for reader help.
- What is Wanted: A smooth on-ramp from
java src/Main.javato running with dependencies, packaging, and using Java tools. No focus on maximal efficiency. - Ant: A cross-platform scripting language with targets. Outsources dependencies to Ivy. Not a great path from
java src/Main.java. Bundles jars in a single folder. - Scorecard for Ant: 🔴 Clear path from
java src/Main.java, 🟡 Clear path to making use of other tools, 🔴 Split dependencies across different paths. - Mill: A Scala build tool with a history of breaking changes. Jumps into building code with Scala. Bundles modules but has a large gap between specified tasks and actual commands. Reuses
--class-pathfor both--class-pathand--module-path. - Scorecard for Mill: 🔴 Clear path from
java src/Main.java, 🔴 Clear path to making use of other tools, 🔴 Split dependencies across different paths. - bld: From the Rife2 people, copies Maven directory layout. Has no overarching Task abstraction. Explicit support for modules but no obvious way to fill other paths.
- Scorecard for bld: 🔴 Clear path from
java src/Main.java, 🟢 Clear path to making use of other tools, 🟡 Split dependencies across different paths. - bach: Built around Java modules. Focuses on JDK tools. Doesn't solve the core dependency problem. Lack of documentation.
- Scorecard for bach (Disqualified): 🟡 Clear path from
java src/Main.java, 🟢 Clear path to making use of other tools, 🔴 Split dependencies across different paths. - pottery: Another "maven, but" with defaults and a yaml file. Can make different types of artifacts but can't put on
--module-pathand has a tight bundle. - Scorecard for pottery: 🔴 Clear path from
java src/Main.java, 🔴 Clear path to making use of other tools, 🔴 Split dependencies across different paths. - jbang: Downloads dependencies with a comment at the top. Easy from
java src/Main.javatojbang src/Main.java, but can't put on--module-pathand not usable in other tooling. - Scorecard for jbang: 🟢 Clear path from
java src/Main.java, 🔴 Clear path to making use of other tools, 🔴 Split dependencies across different paths. - java-jpm: Downloads dependencies and symlinks them. Easy from
java src/Main.javatojava -cp deps/* src/Main.java, but no support for different paths. - Scorecard for java-jpm: 🟡 Clear path from
java src/Main.java, 🟡 Clear path to making use of other tools, 🔴 Split dependencies across different paths. - What has been worked on: The
jresolvetool. Can print dependencies separated by platform specific path separators. Added--output-fileand--output-directoryarguments. Newest version usesjproject.tomlto specify dependency usage and dump argfiles. - What is needed help with: Teaching an IDE how to read dependencies from an argument file. Getting the
javalauncher to support nested argfiles. Tools looking injproject.tomlfor config.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。