mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
jps: include project output to excluded list of containing module (IDEA-98186)
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.jps.indices.impl;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
@@ -60,15 +61,7 @@ public class ModuleExcludeIndexImpl implements ModuleExcludeIndex {
|
||||
myExcludedRoots.addAll(moduleExcludes);
|
||||
}
|
||||
|
||||
JpsJavaProjectExtension projectExtension = JpsJavaExtensionService.getInstance().getProjectExtension(model.getProject());
|
||||
if (projectExtension != null) {
|
||||
String url = projectExtension.getOutputUrl();
|
||||
if (url != null) {
|
||||
myExcludedRoots.add(JpsPathUtil.urlToFile(url));
|
||||
}
|
||||
}
|
||||
|
||||
Map<File, JpsModule> contentToModule = new HashMap<File, JpsModule>();
|
||||
Map<File, JpsModule> contentToModule = new THashMap<File, JpsModule>(FileUtil.FILE_HASHING_STRATEGY);
|
||||
for (JpsModule module : allModules) {
|
||||
for (String contentUrl : module.getContentRootsList().getUrls()) {
|
||||
File contentRoot = JpsPathUtil.urlToFile(contentUrl);
|
||||
@@ -101,6 +94,24 @@ public class ModuleExcludeIndexImpl implements ModuleExcludeIndex {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JpsJavaProjectExtension projectExtension = JpsJavaExtensionService.getInstance().getProjectExtension(model.getProject());
|
||||
if (projectExtension != null) {
|
||||
String url = projectExtension.getOutputUrl();
|
||||
if (!StringUtil.isEmpty(url)) {
|
||||
File excluded = JpsPathUtil.urlToFile(url);
|
||||
File parent = excluded;
|
||||
while (parent != null) {
|
||||
JpsModule module = contentToModule.get(parent);
|
||||
if (module != null) {
|
||||
myModuleToExcludesMap.get(module).add(excluded);
|
||||
}
|
||||
parent = parent.getParentFile();
|
||||
}
|
||||
myExcludedRoots.add(excluded);
|
||||
}
|
||||
}
|
||||
|
||||
for (List<File> files : myModuleToExcludesMap.values()) {
|
||||
((ArrayList<File>)files).trimToSize();
|
||||
}
|
||||
|
||||
@@ -41,8 +41,16 @@ public class ModuleExcludeIndexTest extends JpsJavaModelTestCase {
|
||||
public void testExcludeProjectOutput() throws IOException {
|
||||
File out = new File(myRoot, "out");
|
||||
getJavaService().getOrCreateProjectExtension(myProject).setOutputUrl(JpsPathUtil.pathToUrl(out.getAbsolutePath()));
|
||||
JpsModule module1 = addModule();
|
||||
getJavaService().getOrCreateModuleExtension(module1).setInheritOutput(true);
|
||||
JpsModule module2 = addModule();
|
||||
module2.getContentRootsList().addUrl(JpsPathUtil.pathToUrl(out.getAbsolutePath()));
|
||||
getJavaService().getOrCreateModuleExtension(module2).setInheritOutput(true);
|
||||
|
||||
assertNotExcluded(myRoot);
|
||||
assertExcluded(out);
|
||||
assertEmpty(getModuleExcludes(module1));
|
||||
assertSameElements(getModuleExcludes(module2), out);
|
||||
}
|
||||
|
||||
public void testExcludeModuleOutput() {
|
||||
|
||||
Reference in New Issue
Block a user