Class DependencyCustomizer

java.lang.Object
org.springframework.boot.cli.compiler.DependencyCustomizer

public class DependencyCustomizer extends Object
Customizer that allows dependencies to be added during compilation. Adding a dependency results in a @Grab annotation being added to the primary class is the module that's being customized.

This class provides a fluent API for conditionally adding dependencies. For example: dependencies.ifMissing("com.corp.SomeClass").add(module).

Since:
1.0.0
Author:
Phillip Webb, Andy Wilkinson
  • Constructor Details

    • DependencyCustomizer

      public DependencyCustomizer(groovy.lang.GroovyClassLoader loader, org.codehaus.groovy.ast.ModuleNode moduleNode, DependencyResolutionContext dependencyResolutionContext)
      Create a new DependencyCustomizer instance.
      Parameters:
      loader - the current classloader
      moduleNode - the current module
      dependencyResolutionContext - the context for dependency resolution
    • DependencyCustomizer

      protected DependencyCustomizer(DependencyCustomizer parent)
      Create a new nested DependencyCustomizer.
      Parameters:
      parent - the parent customizer
  • Method Details

    • getVersion

      public String getVersion(String artifactId)
    • getVersion

      public String getVersion(String artifactId, String defaultVersion)
    • ifAnyMissingClasses

      public DependencyCustomizer ifAnyMissingClasses(String... classNames)
      Create a nested DependencyCustomizer that only applies if any of the specified class names are not on the class path.
      Parameters:
      classNames - the class names to test
      Returns:
      a nested DependencyCustomizer
    • ifAllMissingClasses

      public DependencyCustomizer ifAllMissingClasses(String... classNames)
      Create a nested DependencyCustomizer that only applies if all of the specified class names are not on the class path.
      Parameters:
      classNames - the class names to test
      Returns:
      a nested DependencyCustomizer
    • ifAllResourcesPresent

      public DependencyCustomizer ifAllResourcesPresent(String... paths)
      Create a nested DependencyCustomizer that only applies if the specified paths are on the class path.
      Parameters:
      paths - the paths to test
      Returns:
      a nested DependencyCustomizer
    • ifAnyResourcesPresent

      public DependencyCustomizer ifAnyResourcesPresent(String... paths)
      Create a nested DependencyCustomizer that only applies at least one of the specified paths is on the class path.
      Parameters:
      paths - the paths to test
      Returns:
      a nested DependencyCustomizer
    • add

      public DependencyCustomizer add(String... modules)
      Add dependencies and all of their dependencies. The group ID and version of the dependencies are resolved from the modules using the customizer's ArtifactCoordinatesResolver.
      Parameters:
      modules - the module IDs
      Returns:
      this DependencyCustomizer for continued use
    • add

      public DependencyCustomizer add(String module, boolean transitive)
      Add a single dependency and, optionally, all of its dependencies. The group ID and version of the dependency are resolved from the module using the customizer's ArtifactCoordinatesResolver.
      Parameters:
      module - the module ID
      transitive - true if the transitive dependencies should also be added, otherwise false
      Returns:
      this DependencyCustomizer for continued use
    • add

      public DependencyCustomizer add(String module, String classifier, String type, boolean transitive)
      Add a single dependency with the specified classifier and type and, optionally, all of its dependencies. The group ID and version of the dependency are resolved from the module by using the customizer's ArtifactCoordinatesResolver.
      Parameters:
      module - the module ID
      classifier - the classifier, may be null
      type - the type, may be null
      transitive - true if the transitive dependencies should also be added, otherwise false
      Returns:
      this DependencyCustomizer for continued use
    • canAdd

      protected boolean canAdd()
      Strategy called to test if dependencies can be added. Subclasses override as required. Returns true by default.
      Returns:
      true if dependencies can be added, otherwise false
    • getDependencyResolutionContext

      public DependencyResolutionContext getDependencyResolutionContext()
      Returns:
      the dependency resolution context