Annotation Type BuildStep


  • @Retention(RUNTIME)
    @Target(METHOD)
    public @interface BuildStep
    Indicates that a given method is a build step that is run at deployment time to create the runtime output.

    Build steps are run concurrently at augmentation time to augment the application. They use a producer/consumer model, where a step is guaranteed not to be run until all items that it is consuming have been created.

    Producing and consuming is done via injection. This can be done via field injection, method parameter injection, or constructor parameter injection.

    The following types are eligible for injection into a build step:

    Injecting a SimpleBuildItem or a List of MultiBuildItem makes this step a consumer of these items, and as such will not be run until all producers of the relevant items has been run.

    Injecting a BuildProducer makes this class a producer of this item. Alternatively items can be produced by simply returning them from the method.

    If field injection is used then every BuildStep method on the class will be a producer/consumer of these items, while method parameter injection is specific to an individual build step. In general method parameter injection should be the preferred approach as it is more fine grained.

    Note that a BuildStep will only be run if there is a consumer for items it produces. If nothing is interested in the produced item then it will not be run. A consequence of this is that it must be capable of producing at least one item (it does not actually have to produce anything, but it must have the ability to). A build step that cannot produce anything will never be run.

    BuildItem instances must be immutable, as the producer/consumer model does not allow for mutating artifacts. Injecting a build item and modifying it is a bug waiting to happen, as this operation would not be accounted for in the dependency graph.

    See Also:
    Record
    • Element Detail

      • providesCapabilities

        @Deprecated
        String[] providesCapabilities
        Deprecated.
        A list of capabilities that are provided by this build step. This should not be used, CapabilityBuildItem should just be produced directly instead. This method will be removed at some point post Quarkus 1.1.
        Returns:
        The capabilities provided by this build step
        Default:
        {}
      • applicationArchiveMarkers

        @Deprecated
        String[] applicationArchiveMarkers
        Deprecated.
        Indicates that the provided file names should be considered to be application index markers. If these are present in library on the class path then the library will be indexed, and this index will be used when evaluating application components. This should not be used, AdditionalApplicationArchiveMarkerBuildItem should just be produced directly instead. This method will be removed at some point post Quarkus 1.1.
        Default:
        {}
      • onlyIf

        Class<? extends BooleanSupplier>[] onlyIf
        Only include this build step if the given supplier class(es) return true.
        Returns:
        the supplier class array
        Default:
        {}
      • onlyIfNot

        Class<? extends BooleanSupplier>[] onlyIfNot
        Only include this build step if the given supplier class(es) return false.
        Returns:
        the supplier class array
        Default:
        {}
      • loadsApplicationClasses

        @Deprecated
        boolean loadsApplicationClasses
        Deprecated.
        This no longer has any effect, and will be removed in future.
        Default:
        false