Class AbstractBuildinfoMojo

java.lang.Object
org.apache.maven.plugin.AbstractMojo
org.apache.maven.plugins.artifact.buildinfo.AbstractBuildinfoMojo
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
Direct Known Subclasses:
BuildinfoMojo, CompareMojo

public abstract class AbstractBuildinfoMojo extends org.apache.maven.plugin.AbstractMojo
Base buildinfo-generating class, for goals related to Reproducible Builds .buildinfo files.
Since:
3.2.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.apache.maven.artifact.handler.manager.ArtifactHandlerManager
     
    protected File
    Location of the generated buildinfo file.
    private boolean
    Detect projects/modules with install or deploy skipped: avoid taking fingerprints.
    private List<String>
    Artifacts to ignore, specified as a glob matching against ${groupId}/${filename}, for example *invalid input: '<'/>/*.xml.
    private boolean
    Ignore javadoc attached artifacts from buildinfo generation.
    private String
    Timestamp for reproducible output archive entries, either formatted as ISO 8601 yyyy-MM-dd'T'HH:mm:ssXXX or as an int representing seconds since the epoch (like SOURCE_DATE_EPOCH).
    protected org.apache.maven.project.MavenProject
    The Maven project.
    private boolean
    Makes the generated .buildinfo file reproducible, by dropping detailed environment recording: OS will be recorded as "Windows" or "Unix", JVM version as major version only.
    protected org.apache.maven.rtinfo.RuntimeInformation
     
    protected org.apache.maven.execution.MavenSession
    The current build session instance.
    private List<String>
    Avoid taking fingerprints for modules specified as glob matching against ${groupId}/${artifactId}.
    private List<PathMatcher>
     
    private org.apache.maven.toolchain.ToolchainManager
    To obtain a toolchain if possible.

    Fields inherited from interface org.apache.maven.plugin.Mojo

    ROLE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
     
    void
     
    (package private) abstract void
    execute(Map<org.apache.maven.artifact.Artifact,String> artifacts)
    Execute after buildinfo has been generated for current build (eventually aggregated).
    protected Map<org.apache.maven.artifact.Artifact,String>
    generateBuildinfo(boolean mono)
    Generate buildinfo file.
    protected org.apache.maven.project.MavenProject
     
    private org.apache.maven.project.MavenProject
     
    private org.apache.maven.toolchain.Toolchain
     
    (package private) static boolean
    hasBadOutputTimestamp(String outputTimestamp, org.apache.maven.plugin.logging.Log log, org.apache.maven.project.MavenProject project, List<org.apache.maven.project.MavenProject> reactorProjects)
     
    private boolean
    isSkip(org.apache.maven.project.MavenProject project)
     
    protected void
    skip(org.apache.maven.project.MavenProject last)
     

    Methods inherited from class org.apache.maven.plugin.AbstractMojo

    getLog, getPluginContext, setLog, setPluginContext

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • project

      @Component protected org.apache.maven.project.MavenProject project
      The Maven project.
    • buildinfoFile

      @Parameter(defaultValue="${project.build.directory}/${project.artifactId}-${project.version}.buildinfo", required=true, readonly=true) protected File buildinfoFile
      Location of the generated buildinfo file.
    • ignoreJavadoc

      @Parameter(property="buildinfo.ignoreJavadoc", defaultValue="true") private boolean ignoreJavadoc
      Ignore javadoc attached artifacts from buildinfo generation.
    • ignore

      @Parameter(property="buildinfo.ignore", defaultValue="") private List<String> ignore
      Artifacts to ignore, specified as a glob matching against ${groupId}/${filename}, for example *invalid input: '<'/>/*.xml.
    • detectSkip

      @Parameter(property="buildinfo.detect.skip", defaultValue="true") private boolean detectSkip
      Detect projects/modules with install or deploy skipped: avoid taking fingerprints.
    • skipModules

      @Parameter(property="buildinfo.skipModules") private List<String> skipModules
      Avoid taking fingerprints for modules specified as glob matching against ${groupId}/${artifactId}.
      Since:
      3.5.0
    • skipModulesMatcher

      private List<PathMatcher> skipModulesMatcher
    • reproducible

      @Parameter(property="buildinfo.reproducible", defaultValue="false") private boolean reproducible
      Makes the generated .buildinfo file reproducible, by dropping detailed environment recording: OS will be recorded as "Windows" or "Unix", JVM version as major version only.
      Since:
      3.1.0
    • session

      @Component protected org.apache.maven.execution.MavenSession session
      The current build session instance. This is used for toolchain manager API calls.
    • outputTimestamp

      @Parameter(defaultValue="${project.build.outputTimestamp}") private String outputTimestamp
      Timestamp for reproducible output archive entries, either formatted as ISO 8601 yyyy-MM-dd'T'HH:mm:ssXXX or as an int representing seconds since the epoch (like SOURCE_DATE_EPOCH).
      Since:
      3.2.0
    • toolchainManager

      @Component private org.apache.maven.toolchain.ToolchainManager toolchainManager
      To obtain a toolchain if possible.
    • artifactHandlerManager

      @Component protected org.apache.maven.artifact.handler.manager.ArtifactHandlerManager artifactHandlerManager
    • rtInformation

      @Component protected org.apache.maven.rtinfo.RuntimeInformation rtInformation
  • Constructor Details

    • AbstractBuildinfoMojo

      public AbstractBuildinfoMojo()
  • Method Details

    • execute

      public void execute() throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • hasBadOutputTimestamp

      static boolean hasBadOutputTimestamp(String outputTimestamp, org.apache.maven.plugin.logging.Log log, org.apache.maven.project.MavenProject project, List<org.apache.maven.project.MavenProject> reactorProjects)
    • execute

      abstract void execute(Map<org.apache.maven.artifact.Artifact,String> artifacts) throws org.apache.maven.plugin.MojoExecutionException
      Execute after buildinfo has been generated for current build (eventually aggregated).
      Parameters:
      artifacts - a Map of artifacts added to the build info with their associated property key prefix (outputs.[#module.].#artifact)
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • skip

      protected void skip(org.apache.maven.project.MavenProject last) throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • copyAggregateToRoot

      protected void copyAggregateToRoot(File aggregate) throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • generateBuildinfo

      protected Map<org.apache.maven.artifact.Artifact,String> generateBuildinfo(boolean mono) throws org.apache.maven.plugin.MojoExecutionException
      Generate buildinfo file.
      Parameters:
      mono - is it a mono-module build?
      Returns:
      a Map of artifacts added to the build info with their associated property key prefix (outputs.[#module.].#artifact)
      Throws:
      org.apache.maven.plugin.MojoExecutionException - if anything goes wrong
    • getExecutionRoot

      protected org.apache.maven.project.MavenProject getExecutionRoot()
    • getLastProject

      private org.apache.maven.project.MavenProject getLastProject()
    • isSkip

      private boolean isSkip(org.apache.maven.project.MavenProject project)
    • getToolchain

      private org.apache.maven.toolchain.Toolchain getToolchain()