package com.google.gwt.maven;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
import org.apache.maven.model.Resource;
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 java.io.File;
import java.util.List;
/**
* Adds all source directories as resources, and unpacks and add as resource each compile+runtime dependency with {@code <type>java-source</type>}.
*/
@Mojo(name = "import-sources", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true, requiresDependencyResolution = ResolutionScope.RUNTIME)
public class ImportSourcesMojo extends AbstractImportSourcesMojo {
/**
* Location where java-source dependencies will be unpacked.
*/
@Parameter(defaultValue = "${project.build.directory}/generated-resources/gwt-sources", required = true)
private File importedSourcesTargetDirectory;
private final ScopeArtifactFilter artifactFilter = new ScopeArtifactFilter(Artifact.SCOPE_RUNTIME_PLUS_SYSTEM);
@Override
protected File getOutputDirectory() {
return importedSourcesTargetDirectory;
}
@Override
protected List<String> getSourceRoots() {
return project.getCompileSourceRoots();
}
@Override
protected boolean includeArtifact(Artifact artifact) {
return artifactFilter.include(artifact);
}
@Override
protected void addResource(Resource resource) {
project.addResource(resource);
}
@Override
protected List<Resource> getProjectResources() {
return project.getResources();
}
}