@Incubating public class RuleSource extends Object
A rule source is not used like a regular Java object. It is a stateless container of methods and possibly constants.
Please consult the “Rule based model configuration” chapter of the Gradle User Manual for general information about “rules”.
Each method that is annotated with one of the following is considered a rule:
Each annotation specifies the type of the rule, which affects when it will be executed.
The following constraints apply to all rule methods:
staticor not; it makes no difference.
Modelmethods, all methods must have at least one parameter.
Modelmethods, all methods must have a
Method rules declare the subject and any inputs as parameters to the method.
With the exception of
Model methods, the subject of the rule is the, required, first parameter and all subsequent parameters are inputs.
For a non-void
Model method, the subject (i.e. model element being created) is the return object.
For a void
Model method, the subject is the first method parameter.
Path annotation can be placed on any parameter (except the subject of
Model rules) to indicate the model element to bind to.
If there is no
Path annotation, a “by-type” binding will be attempted.
The binding scope is determined by how the rule source is applied.
Along with the constraints on individual rule methods by their associated annotation, the following are general constraints of rule source implementations: