Changelog
3.0.0
Breaking changes
CLI is now an optional extra – The command-line tool’s dependencies (rich, click, rich-click) are no longer installed by default. Use
pip install jgo[cli]to include them. Plainpip install jgogives you the Python library only.Removed deprecated jgo 1.x API – The following, deprecated since 2.0.0, are gone:
jgo.main(),jgo.main_from_endpoint(),jgo.resolve_dependencies()– usejgo.run(),jgo.build(),jgo.resolve()insteadjgo/jgo.pycompatibility shim andjgo.util.compatmoduleDeprecated CLI flags (
-U/--force-update,-a/--additional-jars,--additional-endpoints,--link-type,--log-level)
New features
Maven metadata TTL cache –
Project.update(max_age=N)skips HTTP fetches for metadata files younger than N seconds, reducing unnecessary network traffic.Rate-limit handling – HTTP 429 and 529 responses are retried automatically, honoring
Retry-Afterheaders.Artifact.last_modified()– Returns the deployment timestamp from the remote repository. Handles Nexus v3 correctly by using its REST API when the standardLast-Modifiedheader would give the wrong value.PEP 561 compliance – Added
py.typedmarker so downstream type checkers recognize jgo’s inline type annotations.
2.2.0
New features
JavaSource.DOWNLOADmode – Forces a fresh JDK download via cjdk, bypassing any cached or system Java. Useful for reproducible CI environments.
2.1.3
Bug fixes
Maven
relativePathhandling removed – Resolving POMs with<relativePath>entries caused incorrect resolution in some cases; the field is now ignored during resolution, matching Maven’s behavior for remote artifacts.
2.1.2
Improvements
Auto Java mode tuning – Improved heuristics for selecting a system Java vs. downloading one via cjdk, with clearer logging when the decision is made.
2.1.1
Bug fixes
Windows path normalization – Metadata URL paths were constructed with backslashes on Windows, causing HTTP 404s. Now normalized to forward slashes.
RELEASEversion resolution – Fixed incorrect resolution of theRELEASEpseudo-version in some repository configurations.
Other changes
Require Python 3.10+.
2.1.0
New features
Custom resolver injection –
jgo.build()now accepts aresolver=argument, letting callers supply their ownResolverinstance instead of constructing one internally.
Bug fixes
Platform auto-detection –
Noneplatform values are now resolved to the current platform rather than propagated as null, fixing profile activation on some systems.
2.0.1
Bug fixes
Exclusions not applied – Exclusions declared in
jgo.tomlwere parsed but silently ignored during resolution. They are now correctly applied.jgo.tomlvalidation – Basic structure validation is now performed when loading a spec file, giving a clear error on malformed input instead of a confusing traceback.
2.0.0
jgo 2 is a major rewrite with a new architecture, new CLI, and new Python API. It tries to maintain backward compatibility with jgo 1.x – existing scripts and code should continue to work with deprecation warnings.
New features
Command-based CLI – Modern subcommand interface (
jgo run,jgo init,jgo add,jgo list,jgo tree,jgo info,jgo search,jgo config, etc.) following conventions from tools likeuv,cargo, andnpm. Thejgo <endpoint>shorthand syntax still works.jgo.toml project files – Reproducible environments with lock files, similar to
package.json+package-lock.json. Create withjgo init, manage withjgo add/jgo remove, sync withjgo sync.Pure Python dependency resolver – Resolve Maven dependencies without a Maven installation. Handles transitive dependencies, property interpolation, dependency management (BOMs), exclusions, and scopes.
Automatic Java management – Zero-configuration execution: jgo detects the minimum Java version from bytecode and downloads it on demand via cjdk.
Three-layer architecture – Independently useful layers for Maven resolution (
jgo.maven), environment materialization (jgo.env), and Java execution (jgo.exec).High-level Python API –
jgo.run(),jgo.build(),jgo.resolve()for simple programmatic usage.Artifact search –
jgo searchqueries Maven Central (and configured repositories) for artifacts.Rich terminal output – Color, progress bars, and formatted tables via Rich.
JVM tuning flags –
--max-heap,--min-heap,--gcfor convenient JVM configuration.Platform-aware profile activation –
--platform,--os-name,--os-archflags for Maven profile activation.XDG config support – Settings file at
~/.config/jgo.conf(XDG standard), with~/.jgorcstill supported for backward compatibility.
Breaking changes
Default cache directory changed from
~/.jgoto~/.cache/jgo. Override with--cache-dirorJGO_CACHE_DIR.-uflag behavior – Now checks remote repositories (the old-Ubehavior). For the old-ubehavior (local rebuild only), use-u --offline.
Deprecated
jgo.main(),jgo.main_from_endpoint(),jgo.resolve_dependencies()– usejgo.run(),jgo.build(),jgo.resolve()instead.-U/--force-update,-a/--additional-jars,--additional-endpoints,--link-type,--log-levelflags – see Migrating from jgo 1.x for replacements.
Deprecated APIs were removed in jgo 3.0.