All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.debianmaven.AbstractDebianMojo Maven / Gradle / Ivy

package net.sf.debianmaven;

import com.github.fracpete.processoutput4j.core.StreamingProcessOutputType;
import com.github.fracpete.processoutput4j.core.StreamingProcessOwner;
import com.github.fracpete.processoutput4j.output.CollectingProcessOutput;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public abstract class AbstractDebianMojo extends AbstractMojo
{
	private static final String SKIP_DEB_PROPERTY = "skipDeb";
	private static final String RUN_DEB_PROPERTY = "runDeb";

	public static class LogOutput implements StreamingProcessOwner
	{
		private Log log;

		public LogOutput(Log log)
		{
			this.log = log;
		}

		public StreamingProcessOutputType getOutputType() {
			return StreamingProcessOutputType.BOTH;
		}

		public void processOutput(String line, boolean stdout) {
			if (stdout)
				log.info(line);
			else
				log.error(line);
		}
	}


	/**
	 * @parameter expression="${deb.package.name}" default-value="${project.artifactId}"
	 */
	protected String packageName;

	/**
	 * @parameter expression="${deb.package.version}" default-value="${project.version}"
	 */
	private String packageVersion;

	/**
	 * @parameter expression="${deb.package.revision}" default-value="1"
	 */
	protected String packageRevision;

	/**
	 * @parameter expression="${deb.package.architecture}" default-value="all"
	 */
	protected String packageArchitecture;

	/**
	 * @parameter expression="${deb.maintainer.name}" default-value="${project.developers[0].name}"
	 */
	protected String maintainerName;

	/**
	 * @parameter expression="${deb.maintainer.email}" default-value="${project.developers[0].email}"
	 */
	protected String maintainerEmail;

	/** @parameter default-value="${basedir}/src/deb" */
	protected File sourceDir;

	/** @parameter default-value="${basedir}/target" */
	protected File targetDir;

	/** @parameter default-value="${basedir}/target/deb" */
	protected File stageDir;

	/**
	 * @parameter expression="${deb.package.snapshotRevFile}"
	 * @since 1.0.5
	 */
	private File snapshotRevisionFile = null;

	/** @parameter default-value="false" */
	private boolean skip;

	private static final DateFormat datefmt = new SimpleDateFormat("yyyyMMddHHmm");

	private String snapshotRevision = null;

	protected String processVersion(String version)
	{
		if (snapshotRevision == null)
		{
			Date revtime = snapshotRevisionFile != null
					? new Date(snapshotRevisionFile.lastModified())
					: new Date();

			snapshotRevision = "+" + datefmt.format(revtime);
		}

		return version.replaceAll("-SNAPSHOT", snapshotRevision);
	}

	protected String[] processVersion(String[] versions)
	{
		String[] result = new String[versions.length];
		for (int i=0 ; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy