package info.freelibrary.maven; import java.util.UUID; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author <a href="mailto:ksclarke@ksclarke.io">Kevin S. Clarke</a> */ @Mojo(name = "set-uuid-property", defaultPhase = LifecyclePhase.VALIDATE) public class UUIDGeneratingMojo extends AbstractMojo { private static final Logger LOGGER = LoggerFactory.getLogger(UUIDGeneratingMojo.class); /** * The Maven project directory. */ @Parameter(defaultValue = "${project}") protected MavenProject myProject; /** * An optional String value from which to construct the UUID. */ @Parameter(alias = "string") private String myString; /** * An optional build property name for the requested UUID. */ @Parameter(alias = "name", defaultValue = "uuid") private String myName; @Override public void execute() throws MojoExecutionException, MojoFailureException { final String uuid = myString == null ? UUID.randomUUID().toString() : UUID.fromString(myString).toString(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Setting a UUID property ({} = {}) for use in the Maven build", myName, uuid); } myProject.getProperties().setProperty(myName, uuid); } }