Skip to content

Releases: rvesse/airline

3.0.0

28 Nov 09:37
042c9e9
Compare
Choose a tag to compare

3.0.0 is a major release

Breaking Changes

  • Java 11 is now the minimum required Java version
  • Full JPMS support
    • @BashCompletion annotation moved package in order to enable this
  • @AirlineModule is now the only composition annotation enabled by default, use of @Inject and its associated dependencies is now entirely optional

Full Change Log

  • Core Improvements
    • First class support for BigInteger and BigDecimal as numeric types
    • First class support for Path
    • Provided corrected spelling for ConvertResult.wasSuccessful(), old mis-spelt method preserved but marked as
      deprecated
    • Added a ModulePathLocator as an additional ResourceLocator to allow finding resources on the Module Path when those resources are properly encapsulated by their owning modules
    • Added a JpmsResourceLocator as an additional ResourceLocator to allow finding resources when running in a JPMS
      context for resources that are not properly encapsulated or whose module-info.java you cannot control (requires additional module airline-jpms-resources)
    • BREAKING - Only @AirlineModule is used as a composition annotation by default, use of the older
      @javax.inject.Inject or @jakarta.inject.Inject annotations MUST now be explicitly configured.
  • Help Improvements
    • Added an @SeeAlso annotation to Airline Core (#51)
    • BREAKING - airline-help-bash has moved @BashCompletion annotation into
      com.github.rvesse.airline.annotations.help.bash to avoid package collisions between this module and the core in
      order to allow this module to become a JPMS module
  • Fluent API Improvements
    • A ParserBuilder created by calling withParser() on a CliBuilder can now return control back to its parent via
      the parent() method for cleaner Fluid CLI definitions
  • Dependency Updates
    • BREAKING - Minimum JDK Version is now 11
    • Apache Commons Collections upgraded to 4.4
    • Apache Commons Lang upgraded to 3.14.0
    • BREAKING jakarta.inject and airline-backcompat-javaxinject were made optional so will no longer be pulled in
      automatically
    • Various build plugins updated to the latest available versions (this only impacts developers building the library
      from source)
    • Added new airline-help-external module with a dependency on Apache Commons CSV 1.10.0
    • Added new airline-jpms-resources module with a dependency on
      ClassGraph to enable resource location when Airline is used on Module
      Path i.e. JPMS runtime context
  • Maven Plugin improvements
    • Some logging has moved up to INFO from DEBUG, so you no longer have to use -X to see it
  • New airline-prompts module provides a Fluent API for defining user prompts (#92)
    • Prompt timeouts so non-interactive apps don't hang forever
    • Configurable prompt sources
    • Configurable prompt formatting
    • Prompt for keys, strings, passwords, options (from a pre-configured list) or a strongly typed value
    • Integrates with Airline's type conversion
  • New airline-help-external modules provides new help annotations that allow more complex help to be provided via
    classpath/file resources rather than directly in the annotations. This is a generalisation of the mechanism already
    used by @Version annotation. (#52)
    • Adds @ExternalDiscussion @ExternalProse, @ExternalExitCodes, @ExternalExamples and
      @ExternalExamplesTabular annotations
  • Build and Release Improvements
    • All Airline modules are now fully fledged JPMS modules meaning they can be used on the JVM Module Path instead of
      the Classpath where preferred
      • See airline-examples module for examples of constructing a module-info.java that pulls in other Airline
        modules and see modularExample script for examples of invoking an Airline based app using the Module Path