package de.saumya.mojo.jruby9.jar;
import java.io.File;
import java.io.IOException;
import org.apache.maven.plugin.MojoExecutionException;
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.plugins.annotations.ResolutionScope;
import org.codehaus.plexus.util.FileUtils;
import de.saumya.mojo.jruby9.ArchiveType;
import de.saumya.mojo.jruby9.AbstractGenerateMojo;
import de.saumya.mojo.ruby.script.ScriptException;
/**
* add the gems and jars to resources. @see AbstractGenerateMojo
*
* <br/>
*
* also copies the bootstrap script to the resources if set.
*
* @author christian
*/
@Mojo( name = "generate", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, requiresProject = true,
threadSafe = true, requiresDependencyResolution = ResolutionScope.RUNTIME )
public class GenerateMojo extends AbstractGenerateMojo {
@Parameter( defaultValue = "runnable", property = "jruby.archive.type", required = true )
private ArchiveType type;
@Parameter( required = false )
private Boolean pluginDependenciesOnly;
/**
* if set this file will be copied as 'jar-bootstrap.rb' to the resources.
*/
@Parameter( property = "jruby.jar.bootstrap" )
protected File bootstrap;
@Override
protected void executeWithGems() throws MojoExecutionException,
ScriptException, IOException {
final boolean pluginDependenciesOnly;
switch(type) {
case archive:
if (this.pluginDependenciesOnly == null) {
pluginDependenciesOnly = true;
}
else {
pluginDependenciesOnly = this.pluginDependenciesOnly;
}
break;
default:
pluginDependenciesOnly = false;
}
executeWithGems(pluginDependenciesOnly);
if (bootstrap != null) {
FileUtils.copyFile(bootstrap, new File(project.getBuild().getOutputDirectory(),
"jar-bootstrap.rb"));
}
}
}