Class NashornCompatibilityStrategy

java.lang.Object
org.apache.maven.cling.invoker.mvnup.goals.AbstractUpgradeStrategy
org.apache.maven.cling.invoker.mvnup.goals.NashornCompatibilityStrategy
All Implemented Interfaces:
UpgradeStrategy

@Named @Singleton @Priority(19) public class NashornCompatibilityStrategy extends AbstractUpgradeStrategy
Strategy for injecting the standalone OpenJDK Nashorn engine as a plugin dependency when maven-antrun-plugin uses inline JavaScript via <script language="javascript">.

Maven 4 requires JDK 17+, but the built-in Nashorn JavaScript engine was removed in JDK 15. Plugins executing JavaScript in-process (particularly maven-antrun-plugin with <script language="javascript">) fail with:

[ERROR] Unable to create javax script engine for javascript

Toolchains cannot help because the script runs in Maven's own JVM, not in a forked process. The standalone OpenJDK Nashorn (org.openjdk.nashorn:nashorn-core) provides a drop-in replacement that registers via ServiceLoader and restores JavaScript support.

This strategy both injects the Nashorn dependency as a quick fix and warns that users should consider migrating to GraalVM JavaScript (org.graalvm.js:js-scriptengine) for long-term support.

See Also:
  • Constructor Details

    • NashornCompatibilityStrategy

      public NashornCompatibilityStrategy()
  • Method Details

    • isApplicable

      public boolean isApplicable(UpgradeContext context)
      Description copied from interface: UpgradeStrategy
      Checks if this strategy is applicable given the current options.
      Parameters:
      context - the upgrade context
      Returns:
      true if this strategy should be applied
    • getDescription

      public String getDescription()
      Description copied from interface: UpgradeStrategy
      Gets a description of what this strategy does.
      Returns:
      a human-readable description of the strategy
    • doApply

      protected UpgradeResult doApply(UpgradeContext context, Map<Path, eu.maveniverse.domtrip.Document> pomMap)
      Description copied from class: AbstractUpgradeStrategy
      Subclasses implement the actual upgrade logic here.
      Specified by:
      doApply in class AbstractUpgradeStrategy
      Parameters:
      context - the upgrade context
      pomMap - map of all POM files in the project
      Returns:
      the result of the upgrade operation