package com.heroku.sdk.maven;
import com.heroku.sdk.maven.executor.CopyDependencies;
import com.heroku.sdk.maven.executor.ListDependencies;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import java.io.File;
import java.util.List;
import java.util.Map;
/**
* Deploys an application to Heroku
*
* @goal deploy-slug
* @execute phase="package"
* @requiresDependencyResolution
*/
public class DeploySlugMojo extends HerokuMojo {
/**
* The process types used to run on Heroku (similar to Procfile).
*
* @required
* @parameter property="heroku.processTypes"
*/
protected Map<String,String> processTypes = null;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
super.execute();
CopyDependencies.execute(this.mavenProject, this.mavenSession, this.pluginManager);
List<File> includedDirs = getIncludes();
if(isIncludeTarget()) {
includedDirs.add(getTargetDir());
}
try {
(new MavenApp(appName, getTargetDir().getParentFile(), getTargetDir(), getLog())).deploySlug(
includedDirs, getConfigVars(), jdkUrl == null ? jdkVersion : jdkUrl, stack, processTypes, slugFilename
);
} catch (Exception e) {
throw new MojoFailureException("Failed to deploy application", e);
}
}
}