org.eclipse.xtend.maven.XtendCompile Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of report Show documentation
Show all versions of report Show documentation
The report generator for the Jnario testing language.
The newest version!
package org.eclipse.xtend.maven;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Lists.newArrayList;
import static org.eclipse.xtext.util.Strings.concat;
import java.io.File;
import java.util.List;
import java.util.Set;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
import org.apache.maven.plugin.MojoExecutionException;
import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
/**
* Goal which compiles Xtend sources.
*
* @author Michael Clay - Initial contribution and API
* @goal compile
* @phase generate-sources
* @requiresDependencyResolution compile
*/
public class XtendCompile extends AbstractXtendCompilerMojo {
/**
* Location of the generated source files.
*
* @parameter default-value="${basedir}/src/main/generated-sources/xtend"
* @required
*/
private String outputDirectory;
/**
* Location of the temporary compiler directory.
*
* @parameter default-value="${project.build.directory}/xtend"
* @required
*/
private String tempDirectory;
@Override
protected void internalExecute() throws MojoExecutionException {
final String defaultValue = project.getBasedir() + "/src/main/generated-sources/xtend";
getLog().debug("Output directory '" + outputDirectory + "'");
getLog().debug("Default directory '" + defaultValue + "'");
// IF output is not explicitly set try to read xtend prefs from eclipse .settings folder
if (defaultValue.equals(outputDirectory)) {
readXtendEclipseSetting(project.getBuild().getSourceDirectory(), new Procedure1() {
public void apply(String xtendOutputDir) {
outputDirectory = xtendOutputDir;
getLog().info("Using Xtend output directory '" + outputDirectory + "'");
}
});
}
outputDirectory = resolveToBaseDir(outputDirectory);
compileSources(xtendBatchCompilerProvider.get());
}
private void compileSources(XtendBatchCompiler xtend2BatchCompiler) throws MojoExecutionException {
List compileSourceRoots = Lists.newArrayList(project.getCompileSourceRoots());
String classPath = concat(File.pathSeparator, getClassPath());
project.addCompileSourceRoot(outputDirectory);
compile(xtend2BatchCompiler, classPath, compileSourceRoots, outputDirectory);
}
@SuppressWarnings("deprecation")
protected List getClassPath() {
Set classPath = Sets.newLinkedHashSet();
classPath.add(project.getBuild().getSourceDirectory());
try {
classPath.addAll(project.getCompileClasspathElements());
} catch (DependencyResolutionRequiredException e) {
throw new WrappedException(e);
}
addDependencies(classPath, project.getCompileArtifacts());
return newArrayList(filter(classPath, FILE_EXISTS));
}
@Override
protected String getTempDirectory() {
return tempDirectory;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy