Package org.apache.maven.api.model
Class Activation
java.lang.Object
org.apache.maven.api.model.Activation
- All Implemented Interfaces:
Serializable
,InputLocationTracker
@Experimental
@Generated
@ThreadSafe
@Immutable
public class Activation
extends Object
implements 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:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Builder class used to create Activation instances. -
Constructor Summary
ModifierConstructorDescriptionprotected
Activation
(Activation.Builder builder) Constructor for this class, to be called from its subclasses andActivation.Builder
. -
Method Summary
Modifier and TypeMethodDescriptionThe condition which must be satisfied to activate the profile.getFile()
Specifies that this profile will be activated based on existence of a file.Gets the input location that caused this model to be read.getJdk()
Specifies that this profile will be activated when a matching JDK is detected.getLocation
(Object key) Gets the location of the specified field in the input source.Gets the keys of the locations of the input source.getOs()
Specifies that this profile will be activated when matching operating system attributes are detected.Specifies that this profile will be activated based on the project's packaging.Specifies that this profile will be activated when this property is specified.boolean
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.static Activation.Builder
Creates a newActivation
builder instance.static Activation.Builder
newBuilder
(boolean withDefaults) Creates a newActivation
builder instance using default values or not.static Activation.Builder
newBuilder
(Activation from) Creates a newActivation
builder instance using the specified object as a basis.static Activation.Builder
newBuilder
(Activation from, boolean forceCopy) Creates a newActivation
builder instance using the specified object as a basis.static Activation
Creates a newActivation
instance.static Activation
newInstance
(boolean withDefaults) Creates a newActivation
instance using default values or not.with()
Creates a new builder with this object as the basis.withActiveByDefault
(boolean activeByDefault) Creates a newActivation
instance using the specified activeByDefault.withCondition
(String condition) Creates a newActivation
instance using the specified condition.withFile
(ActivationFile file) Creates a newActivation
instance using the specified file.Creates a newActivation
instance using the specified jdk.withOs
(ActivationOS os) Creates a newActivation
instance using the specified os.withPackaging
(String packaging) Creates a newActivation
instance using the specified packaging.withProperty
(ActivationProperty property) Creates a newActivation
instance using the specified property.
-
Constructor Details
-
Activation
Constructor for this class, to be called from its subclasses andActivation.Builder
.- See Also:
-
-
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
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
Specifies that this profile will be activated when matching operating system attributes are detected.- Returns:
- a
ActivationOS
-
getProperty
Specifies that this profile will be activated when this property is specified.- Returns:
- a
ActivationProperty
-
getFile
Specifies that this profile will be activated based on existence of a file.- Returns:
- a
ActivationFile
-
getPackaging
Specifies that this profile will be activated based on the project's packaging.- Returns:
- a
String
-
getCondition
The condition which must be satisfied to activate the profile.- Returns:
- a
String
-
getLocation
Gets the location of the specified field in the input source.- Specified by:
getLocation
in interfaceInputLocationTracker
-
getLocationKeys
Gets the keys of the locations of the input source. -
getLocationKeyStream
-
getImportedFrom
Gets the input location that caused this model to be read.- Specified by:
getImportedFrom
in interfaceInputLocationTracker
- Returns:
- InputLocation
-
with
Creates a new builder with this object as the basis.- Returns:
- a
Builder
-
withActiveByDefault
Creates a newActivation
instance using the specified activeByDefault.- Parameters:
activeByDefault
- the newboolean
to use- Returns:
- a
Activation
with the specified activeByDefault
-
withJdk
Creates a newActivation
instance using the specified jdk.- Parameters:
jdk
- the newString
to use- Returns:
- a
Activation
with the specified jdk
-
withOs
Creates a newActivation
instance using the specified os.- Parameters:
os
- the newActivationOS
to use- Returns:
- a
Activation
with the specified os
-
withProperty
Creates a newActivation
instance using the specified property.- Parameters:
property
- the newActivationProperty
to use- Returns:
- a
Activation
with the specified property
-
withFile
Creates a newActivation
instance using the specified file.- Parameters:
file
- the newActivationFile
to use- Returns:
- a
Activation
with the specified file
-
withPackaging
Creates a newActivation
instance using the specified packaging.- Parameters:
packaging
- the newString
to use- Returns:
- a
Activation
with the specified packaging
-
withCondition
Creates a newActivation
instance using the specified condition.- Parameters:
condition
- the newString
to use- Returns:
- a
Activation
with the specified condition
-
newInstance
Creates a newActivation
instance. Equivalent tonewInstance(true)
.- Returns:
- a new
Activation
- See Also:
-
newInstance
Creates a newActivation
instance using default values or not. Equivalent tonewBuilder(withDefaults).build()
.- Parameters:
withDefaults
- the boolean indicating whether default values should be used- Returns:
- a new
Activation
-
newBuilder
Creates a newActivation
builder instance. Equivalent tonewBuilder(true)
.- Returns:
- a new
Builder
- See Also:
-
newBuilder
Creates a newActivation
builder instance using default values or not.- Parameters:
withDefaults
- the boolean indicating whether default values should be used- Returns:
- a new
Builder
-
newBuilder
Creates a newActivation
builder instance using the specified object as a basis. Equivalent tonewBuilder(from, false)
.- Parameters:
from
- theActivation
instance to use as a basis- Returns:
- a new
Builder
-
newBuilder
Creates a newActivation
builder instance using the specified object as a basis.- Parameters:
from
- theActivation
instance to use as a basisforceCopy
- the boolean indicating if a copy should be forced- Returns:
- a new
Builder
-