blob: ced75de9d65c1ae2f1bc88c1b751a793419380c2 [file] [log] [blame]
package org.jetbrains.idea.maven.importing;
import com.intellij.openapi.module.Module;
import com.intellij.util.PairConsumer;
import org.jdom.Element;
import org.jetbrains.idea.maven.project.MavenProject;
import org.jetbrains.idea.maven.project.MavenProjectChanges;
import org.jetbrains.idea.maven.project.MavenProjectsProcessorTask;
import org.jetbrains.idea.maven.project.MavenProjectsTree;
import org.jetbrains.idea.maven.utils.MavenJDOMUtil;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
import java.util.List;
import java.util.Map;
/**
* This class can not be moved to org.jetbrains.idea.maven.plugins.groovy package because it's used from 'Eclipse Groovy Compiler Plugin'
*/
public abstract class GroovyImporter extends MavenImporter {
public GroovyImporter(String pluginGroupID, String pluginArtifactID) {
super(pluginGroupID, pluginArtifactID);
}
@Override
public void preProcess(Module module,
MavenProject mavenProject,
MavenProjectChanges changes,
MavenModifiableModelsProvider modifiableModelsProvider) {
}
@Override
public void process(MavenModifiableModelsProvider modifiableModelsProvider, Module module, MavenRootModelAdapter rootModel,
MavenProjectsTree mavenModel,
MavenProject mavenProject,
MavenProjectChanges changes,
Map<MavenProject, String> mavenProjectToModuleName,
List<MavenProjectsProcessorTask> postTasks) {
}
@Override
public void collectSourceRoots(MavenProject mavenProject, PairConsumer<String, JpsModuleSourceRootType<?>> result) {
collectSourceOrTestFolders(mavenProject, "compile", "src/main/groovy", JavaSourceRootType.SOURCE, result);
collectSourceOrTestFolders(mavenProject, "testCompile", "src/test/groovy", JavaSourceRootType.TEST_SOURCE, result);
}
private void collectSourceOrTestFolders(MavenProject mavenProject, String goal, String defaultDir, JavaSourceRootType type,
PairConsumer<String, JpsModuleSourceRootType<?>> result) {
Element sourcesElement = getGoalConfig(mavenProject, goal);
List<String> dirs = MavenJDOMUtil.findChildrenValuesByPath(sourcesElement, "sources", "fileset.directory");
if (dirs.isEmpty()) {
result.consume(mavenProject.getDirectory() + "/" + defaultDir, type);
return;
}
for (String dir : dirs) {
result.consume(dir, type);
}
}
@Override
public void collectExcludedFolders(MavenProject mavenProject, List<String> result) {
String stubsDir = findGoalConfigValue(mavenProject, "generateStubs", "outputDirectory");
String testStubsDir = findGoalConfigValue(mavenProject, "generateTestStubs", "outputDirectory");
// exclude common parent of /groovy-stubs/main and /groovy-stubs/test
String defaultStubsDir = mavenProject.getGeneratedSourcesDirectory(false) + "/groovy-stubs";
result.add(stubsDir == null ? defaultStubsDir : stubsDir);
result.add(testStubsDir == null ? defaultStubsDir : testStubsDir);
}
}