Enum Class ResolutionScope

java.lang.Object
java.lang.Enum<ResolutionScope>
network.ike.plugin.release.coherence.ResolutionScope
All Implemented Interfaces:
Serializable, Comparable<ResolutionScope>, Constable, network.ike.support.enums.ConstantBackedEnum, network.ike.support.enums.EnumDefinition

public enum ResolutionScope extends Enum<ResolutionScope> implements network.ike.support.enums.EnumDefinition
Where a release must confirm its own just-published artifact is resolvable before it declares success — the demanded resolution scope (IKE-Network/ike-issues#705).

The release-cascade is loosely coupled: a module asserts only about itself ("I am not done until what I just published is actually fetchable where I promised"); no module ever asks about its upstreams. Cascade coherence then emerges, because the finish-trigger fires the downstream only after the upstream build succeeds, and "success" now includes the upstream's own self-resolution check. An un-resolvable artifact fails its own build, the finish-trigger does not fire, and the cascade stops — incoherence becomes a red build on the responsible module, never a silently-wrong downstream.

The three rungs name a provided repository in which the module must confirm its artifact, ordered by audience reach:

  • LOCAL — the local .m2 cache. Verifies nothing: the module's own install trivially put the artifact there. An explicit opt-OUT, valid only for draft/dev runs and rejected for -publish.
  • NEXUS (default) — the shared, consumer-resolvable Nexus group (ike-public). The cross-agent / cascade guarantee: the source of truth a downstream's "resolve latest" actually reads.
  • CENTRAL — Maven Central. The public-availability gate; being eventually-consistent it is a long, bounded, non-blocking verify, never a fast hard gate.

The local-vs-TeamCity run axis is irrelevant to the scope — the determinant is the artifact's audience (consumers resolve from the shared repo), not where the build ran.

Lives in ike-maven-plugin rather than the shared ike-java-support enum library (where ReleasePolicy lives) because, unlike a release policy, a resolution scope is read only by the release goal here — no consumer-side extension validates it — so it needs no foundation re-release to evolve.

Each rung carries a NAME_* mirror constant — the ConstantBackedEnum pattern — so the rung name is usable where a compile-time String constant is required (e.g. the Mojo @Parameter default).

Since:
1
  • Enum Constant Details

    • LOCAL

      public static final ResolutionScope LOCAL
      The local .m2 cache — verifies nothing; draft/dev opt-out only.
    • NEXUS

      public static final ResolutionScope NEXUS
      The shared, consumer-resolvable Nexus group (ike-public).
    • CENTRAL

      public static final ResolutionScope CENTRAL
      Maven Central — the public-availability gate (eventual-consistency).
  • Field Details

  • Method Details

    • values

      public static ResolutionScope[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static ResolutionScope valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • literalName

      public String literalName()

      For ResolutionScope the literal is the rung name as it appears in the ike.resolutionScope property.

      Specified by:
      literalName in interface network.ike.support.enums.ConstantBackedEnum
    • term

      public String term()

      For ResolutionScope the term and literalName() coincide.

      Specified by:
      term in interface network.ike.support.enums.EnumDefinition
    • definition

      public String definition()
      Specified by:
      definition in interface network.ike.support.enums.EnumDefinition
    • satisfiesPublishMinimum

      public boolean satisfiesPublishMinimum()
      Whether this scope is strong enough to publish at — i.e. it confirms the artifact in a shared, consumer-resolvable repository rather than only the build's own local cache.

      -publish demands ≥ NEXUS: a published artifact's audience is consumers, who resolve from the shared repo, so a release must prove the artifact is fetchable there. LOCAL is the lone opt-out and is rejected for publish.

      Returns:
      true for NEXUS and CENTRAL; false for LOCAL