mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
jps model: added methods to get lists of files and directories excluded from compilation
This is needed to generate build.gradle files from IDEA project for example.
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.jps.model.java.compiler;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
@@ -25,5 +26,17 @@ public interface JpsCompilerExcludes {
|
||||
|
||||
void addExcludedDirectory(String url, boolean recursively);
|
||||
|
||||
/**
|
||||
* @return {@code true} if {@code file} is explicitly excluded or located under excluded directory
|
||||
*/
|
||||
boolean isExcluded(File file);
|
||||
|
||||
/**
|
||||
* @return set of explicitly excluded files
|
||||
*/
|
||||
Set<File> getExcludedFiles();
|
||||
|
||||
Set<File> getExcludedDirectories();
|
||||
|
||||
Set<File> getRecursivelyExcludedDirectories();
|
||||
}
|
||||
|
||||
+21
-6
@@ -16,20 +16,20 @@
|
||||
package org.jetbrains.jps.model.java.impl.compiler;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import org.jetbrains.jps.util.JpsPathUtil;
|
||||
import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes;
|
||||
import org.jetbrains.jps.util.JpsPathUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
|
||||
private final Set<File> myFiles = new HashSet<>();
|
||||
private final Set<File> myDirectories = new HashSet<>();
|
||||
private final Set<File> myRecursivelyExcludedDirectories = new HashSet<>();
|
||||
private final Set<File> myFiles = new LinkedHashSet<>();
|
||||
private final Set<File> myDirectories = new LinkedHashSet<>();
|
||||
private final Set<File> myRecursivelyExcludedDirectories = new LinkedHashSet<>();
|
||||
|
||||
@Override
|
||||
public void addExcludedFile(String url) {
|
||||
@@ -50,7 +50,7 @@ public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExcluded(File file) {
|
||||
public boolean isExcluded(File file) {
|
||||
if (myFiles.contains(file)) {
|
||||
return true;
|
||||
}
|
||||
@@ -70,4 +70,19 @@ public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<File> getExcludedFiles() {
|
||||
return myFiles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<File> getExcludedDirectories() {
|
||||
return myDirectories;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<File> getRecursivelyExcludedDirectories() {
|
||||
return myRecursivelyExcludedDirectories;
|
||||
}
|
||||
}
|
||||
|
||||
+10
-2
@@ -23,6 +23,8 @@ import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions;
|
||||
import org.jetbrains.jps.model.java.compiler.ProcessorConfigProfile;
|
||||
import org.jetbrains.jps.util.JpsPathUtil;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class JpsCompilerConfigurationTest extends JpsSerializationTestCase {
|
||||
public void testLoadFromIpr() {
|
||||
doTest("jps/model-serialization/testData/compilerConfiguration/compilerConfiguration.ipr");
|
||||
@@ -41,18 +43,24 @@ public class JpsCompilerConfigurationTest extends JpsSerializationTestCase {
|
||||
ProcessorConfigProfile defaultProfile = configuration.getDefaultAnnotationProcessingProfile();
|
||||
assertTrue(defaultProfile.isEnabled());
|
||||
assertFalse(defaultProfile.isObtainProcessorsFromClasspath());
|
||||
assertEquals(FileUtil.toSystemDependentName(JpsPathUtil.urlToPath(getUrl("src"))), defaultProfile.getProcessorPath());
|
||||
String srcDir = JpsPathUtil.urlToPath(getUrl("src"));
|
||||
assertEquals(FileUtil.toSystemDependentName(srcDir), defaultProfile.getProcessorPath());
|
||||
assertEquals("b", defaultProfile.getProcessorOptions().get("a"));
|
||||
assertEquals("d", defaultProfile.getProcessorOptions().get("c"));
|
||||
assertEquals("gen", defaultProfile.getGeneratedSourcesDirectoryName(false));
|
||||
|
||||
JpsCompilerExcludes excludes = configuration.getCompilerExcludes();
|
||||
assertSameElements(excludes.getExcludedFiles(), new File(srcDir, "A.java"));
|
||||
assertSameElements(excludes.getExcludedDirectories(), new File(srcDir, "nonrec"));
|
||||
assertSameElements(excludes.getRecursivelyExcludedDirectories(), new File(srcDir, "rec"));
|
||||
|
||||
assertFalse(isExcluded(excludes, "src/nonrec/x/Y.java"));
|
||||
assertTrue(isExcluded(excludes, "src/nonrec/Y.java"));
|
||||
assertTrue(isExcluded(excludes, "src/rec/x/Y.java"));
|
||||
assertTrue(isExcluded(excludes, "src/rec/Y.java"));
|
||||
assertTrue(isExcluded(excludes, "src/A.java"));
|
||||
assertFalse(isExcluded(excludes, "src/B.java"));
|
||||
|
||||
|
||||
JpsJavaCompilerOptions options = configuration.getCurrentCompilerOptions();
|
||||
assertNotNull(options);
|
||||
assertEquals(512, options.MAXIMUM_HEAP_SIZE);
|
||||
|
||||
Reference in New Issue
Block a user