in src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java [131:180]
public void execute() throws MojoExecutionException {
boolean mono = reactorProjects.size() == 1;
MavenArchiver archiver = new MavenArchiver();
Date timestamp = archiver.parseOutputTimestamp(outputTimestamp);
if (timestamp == null) {
getLog().warn("Reproducible Build not activated by project.build.outputTimestamp property: "
+ "see https://maven.apache.org/guides/mini/guide-reproducible-builds.html");
} else {
if (getLog().isDebugEnabled()) {
getLog().debug("project.build.outputTimestamp = \"" + outputTimestamp + "\" => "
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(timestamp));
}
// check if timestamp well defined in a project from reactor
boolean parentInReactor = false;
MavenProject reactorParent = project;
while (reactorProjects.contains(reactorParent.getParent())) {
parentInReactor = true;
reactorParent = reactorParent.getParent();
}
String prop = reactorParent.getOriginalModel().getProperties().getProperty("project.build.outputTimestamp");
if (prop == null) {
getLog().error("project.build.outputTimestamp property should not be inherited but defined in "
+ (parentInReactor ? "parent POM from reactor " : "POM ") + reactorParent.getFile());
}
}
if (!mono) {
// if module skips install and/or deploy
if (isSkip(project)) {
getLog().info("Skipping goal because module skips install and/or deploy");
return;
}
// if multi-module build, generate (aggregate) buildinfo only in last module
MavenProject last = getLastProject();
if (project != last) {
skip(last);
return;
}
}
// generate buildinfo
Map<Artifact, String> artifacts = generateBuildinfo(mono);
getLog().info("Saved " + (mono ? "" : "aggregate ") + "info on build to " + buildinfoFile);
copyAggregateToRoot(buildinfoFile);
execute(artifacts);
}