Class Activation

java.lang.Object
org.apache.maven.api.model.Activation
All Implemented Interfaces:
Serializable, InputLocationTracker

The conditions within the build runtime environment which will trigger the automatic inclusion of the build profile. Multiple conditions can be defined, which must be all satisfied to activate the profile.

In addition to the traditional activation mechanisms (JDK version, OS properties, file existence, etc.), Maven now supports a powerful condition-based activation through the condition field. This new mechanism allows for more flexible and expressive profile activation rules.

Condition Syntax

The condition is specified as a string expression that can include various functions, comparisons, and logical operators. Some key features include:

  • Property access: ${property.name}
  • Comparison operators: ==, !=, <, >, <=, >=
  • Logical operators: && (AND), || (OR), not(...)
  • Functions: exists(...), missing(...), matches(...), inrange(...), and more

Supported Functions

The following functions are supported in condition expressions:

  • length(string): Returns the length of the given string.
  • upper(string): Converts the string to uppercase.
  • lower(string): Converts the string to lowercase.
  • substring(string, start, [end]): Returns a substring of the given string.
  • indexOf(string, substring): Returns the index of the first occurrence of substring in string, or -1 if not found.
  • contains(string, substring): Checks if the string contains the substring.
  • matches(string, regex): Checks if the string matches the given regular expression.
  • not(condition): Negates the given condition.
  • if(condition, trueValue, falseValue): Returns trueValue if the condition is true, falseValue otherwise.
  • exists(path): Checks if a file matching the given glob pattern exists.
  • missing(path): Checks if a file matching the given glob pattern does not exist.
  • inrange(version, range): Checks if the given version is within the specified version range.

Supported properties

The following properties are supported in expressions:

  • `project.basedir`: The project directory
  • `project.rootDirectory`: The root directory of the project
  • `project.artifactId`: The artifactId of the project
  • `project.packaging`: The packaging of the project
  • user properties
  • system properties (including environment variables prefixed with `env.`)

Examples

  • JDK version range: inrange(${java.version}, '[11,)') (JDK 11 or higher)
  • OS check: ${os.name} == 'windows'
  • File existence: exists('${project.basedir}/src/**/*.xsd')
  • Property check: ${my.property} != 'some-value'
  • Regex matching: matches(${os.version}, '.*aws')
  • Complex condition: ${os.name} == 'windows' && ${os.arch} != 'amd64' && inrange(${os.version}, '[10,)')
  • String length check: length(${user.name}) > 5
  • Substring with version: substring(${java.version}, 0, 3) == '1.8'
  • Using indexOf: indexOf(${java.version}, '-') > 0
  • Conditional logic: if(contains(${java.version}, '-'), substring(${java.version}, 0, indexOf(${java.version}, '-')), ${java.version})

This flexible condition mechanism allows for more precise control over profile activation, enabling developers to create profiles that respond to a wide range of environmental factors and project states.

See Also:
  • Constructor Details

  • Method Details

    • isActiveByDefault

      public boolean isActiveByDefault()
      If set to true, this profile will be active unless another profile in this pom is activated using the command line -P option or by one of that profile's activators.
      Returns:
      a boolean
    • getJdk

      public String getJdk()
      Specifies that this profile will be activated when a matching JDK is detected. For example, 1.4 only activates on JDKs versioned 1.4, while !1.4 matches any JDK that is not version 1.4. Ranges are supported too: [1.5,) activates when the JDK is 1.5 minimum.
      Returns:
      a String
    • getOs

      public ActivationOS getOs()
      Specifies that this profile will be activated when matching operating system attributes are detected.
      Returns:
      a ActivationOS
    • getProperty

      public ActivationProperty getProperty()
      Specifies that this profile will be activated when this property is specified.
      Returns:
      a ActivationProperty
    • getFile

      public ActivationFile getFile()
      Specifies that this profile will be activated based on existence of a file.
      Returns:
      a ActivationFile
    • getPackaging

      public String getPackaging()
      Specifies that this profile will be activated based on the project's packaging.
      Returns:
      a String
    • getCondition

      public String getCondition()
      The condition which must be satisfied to activate the profile.
      Returns:
      a String
    • getLocation

      public InputLocation getLocation(Object key)
      Gets the location of the specified field in the input source.
      Specified by:
      getLocation in interface InputLocationTracker
    • getLocationKeys

      public Set<Object> getLocationKeys()
      Gets the keys of the locations of the input source.
    • getLocationKeyStream

      protected Stream<Object> getLocationKeyStream()
    • getImportedFrom

      public InputLocation getImportedFrom()
      Gets the input location that caused this model to be read.
      Specified by:
      getImportedFrom in interface InputLocationTracker
      Returns:
      InputLocation
    • with

      Creates a new builder with this object as the basis.
      Returns:
      a Builder
    • withActiveByDefault

      @Nonnull public Activation withActiveByDefault(boolean activeByDefault)
      Creates a new Activation instance using the specified activeByDefault.
      Parameters:
      activeByDefault - the new boolean to use
      Returns:
      a Activation with the specified activeByDefault
    • withJdk

      @Nonnull public Activation withJdk(String jdk)
      Creates a new Activation instance using the specified jdk.
      Parameters:
      jdk - the new String to use
      Returns:
      a Activation with the specified jdk
    • withOs

      @Nonnull public Activation withOs(ActivationOS os)
      Creates a new Activation instance using the specified os.
      Parameters:
      os - the new ActivationOS to use
      Returns:
      a Activation with the specified os
    • withProperty

      @Nonnull public Activation withProperty(ActivationProperty property)
      Creates a new Activation instance using the specified property.
      Parameters:
      property - the new ActivationProperty to use
      Returns:
      a Activation with the specified property
    • withFile

      @Nonnull public Activation withFile(ActivationFile file)
      Creates a new Activation instance using the specified file.
      Parameters:
      file - the new ActivationFile to use
      Returns:
      a Activation with the specified file
    • withPackaging

      @Nonnull public Activation withPackaging(String packaging)
      Creates a new Activation instance using the specified packaging.
      Parameters:
      packaging - the new String to use
      Returns:
      a Activation with the specified packaging
    • withCondition

      @Nonnull public Activation withCondition(String condition)
      Creates a new Activation instance using the specified condition.
      Parameters:
      condition - the new String to use
      Returns:
      a Activation with the specified condition
    • newInstance

      @Nonnull public static Activation newInstance()
      Creates a new Activation instance. Equivalent to newInstance(true).
      Returns:
      a new Activation
      See Also:
    • newInstance

      @Nonnull public static Activation newInstance(boolean withDefaults)
      Creates a new Activation instance using default values or not. Equivalent to newBuilder(withDefaults).build().
      Parameters:
      withDefaults - the boolean indicating whether default values should be used
      Returns:
      a new Activation
    • newBuilder

      @Nonnull public static Activation.Builder newBuilder()
      Creates a new Activation builder instance. Equivalent to newBuilder(true).
      Returns:
      a new Builder
      See Also:
    • newBuilder

      @Nonnull public static Activation.Builder newBuilder(boolean withDefaults)
      Creates a new Activation builder instance using default values or not.
      Parameters:
      withDefaults - the boolean indicating whether default values should be used
      Returns:
      a new Builder
    • newBuilder

      @Nonnull public static Activation.Builder newBuilder(Activation from)
      Creates a new Activation builder instance using the specified object as a basis. Equivalent to newBuilder(from, false).
      Parameters:
      from - the Activation instance to use as a basis
      Returns:
      a new Builder
    • newBuilder

      @Nonnull public static Activation.Builder newBuilder(Activation from, boolean forceCopy)
      Creates a new Activation builder instance using the specified object as a basis.
      Parameters:
      from - the Activation instance to use as a basis
      forceCopy - the boolean indicating if a copy should be forced
      Returns:
      a new Builder