mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-99692: Eclipse import: Java compilation fails due to incorrect classpath
This commit is contained in:
+7
-8
@@ -17,6 +17,7 @@ package org.jetbrains.jps.model.serialization.module;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.text.UniqueNameGenerator;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsCompositeElement;
|
||||
@@ -29,16 +30,14 @@ import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||
import org.jetbrains.jps.model.java.JpsJavaSdkTypeWrapper;
|
||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
||||
import org.jetbrains.jps.model.library.JpsLibraryReference;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkReference;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
|
||||
import org.jetbrains.jps.model.module.*;
|
||||
import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsSdkTableSerializer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
import static com.intellij.openapi.util.JDOMUtil.getChildren;
|
||||
|
||||
@@ -89,7 +88,7 @@ public class JpsModuleRootModelSerializer {
|
||||
final JpsDependenciesList dependenciesList = module.getDependenciesList();
|
||||
dependenciesList.clear();
|
||||
final JpsElementFactory elementFactory = JpsElementFactory.getInstance();
|
||||
int moduleLibraryNum = 0;
|
||||
UniqueNameGenerator nameGenerator = new UniqueNameGenerator();
|
||||
for (Element orderEntry : getChildren(rootModelComponent, ORDER_ENTRY_TAG)) {
|
||||
String type = orderEntry.getAttributeValue(TYPE_ATTRIBUTE);
|
||||
if (SOURCE_FOLDER_TYPE.equals(type)) {
|
||||
@@ -120,14 +119,14 @@ public class JpsModuleRootModelSerializer {
|
||||
final Element moduleLibraryElement = orderEntry.getChild(LIBRARY_TAG);
|
||||
String name = moduleLibraryElement.getAttributeValue(NAME_ATTRIBUTE);
|
||||
if (name == null) {
|
||||
name = GENERATED_LIBRARY_NAME_PREFIX + (moduleLibraryNum++);
|
||||
name = GENERATED_LIBRARY_NAME_PREFIX;
|
||||
}
|
||||
final JpsLibrary library = JpsLibraryTableSerializer.loadLibrary(moduleLibraryElement, name);
|
||||
String uniqueName = nameGenerator.generateUniqueName(name);
|
||||
final JpsLibrary library = JpsLibraryTableSerializer.loadLibrary(moduleLibraryElement, uniqueName);
|
||||
module.addModuleLibrary(library);
|
||||
|
||||
final JpsLibraryDependency dependency = dependenciesList.addLibraryDependency(library);
|
||||
loadModuleDependencyProperties(dependency, orderEntry);
|
||||
moduleLibraryNum++;
|
||||
}
|
||||
else if (MODULE_TYPE.equals(type)) {
|
||||
String name = orderEntry.getAttributeValue(MODULE_NAME_ATTRIBUTE);
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library">
|
||||
<library name="xxx">
|
||||
<CLASSES>
|
||||
<root url="file://$MODULE_DIR$/data/lib1" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="xxx">
|
||||
<CLASSES>
|
||||
<root url="file://$MODULE_DIR$/data/lib2" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/duplicatedModuleLibrary.iml" filepath="$PROJECT_DIR$/duplicatedModuleLibrary.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.4" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
|
||||
+15
@@ -28,6 +28,7 @@ import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
|
||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
||||
import org.jetbrains.jps.model.library.JpsOrderRootType;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkReference;
|
||||
import org.jetbrains.jps.model.module.*;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer;
|
||||
@@ -120,6 +121,20 @@ public class JpsProjectSerializationTest extends JpsSerializationTestCase {
|
||||
assertEquals(JpsJavaDependencyScope.COMPILE, extension.getScope());
|
||||
}
|
||||
|
||||
public void testDuplicatedModuleLibrary() {
|
||||
loadProject("/jps/model-serialization/testData/duplicatedModuleLibrary/duplicatedModuleLibrary.ipr");
|
||||
JpsModule module = assertOneElement(myProject.getModules());
|
||||
List<JpsDependencyElement> dependencies = module.getDependenciesList().getDependencies();
|
||||
assertEquals(4, dependencies.size());
|
||||
JpsLibrary lib1 = assertInstanceOf(dependencies.get(2), JpsLibraryDependency.class).getLibrary();
|
||||
assertNotNull(lib1);
|
||||
assertSameElements(lib1.getRootUrls(JpsOrderRootType.COMPILED), getUrl("data/lib1"));
|
||||
JpsLibrary lib2 = assertInstanceOf(dependencies.get(3), JpsLibraryDependency.class).getLibrary();
|
||||
assertNotSame(lib1, lib2);
|
||||
assertNotNull(lib2);
|
||||
assertSameElements(lib2.getRootUrls(JpsOrderRootType.COMPILED), getUrl("data/lib2"));
|
||||
}
|
||||
|
||||
public void testLoadEncoding() {
|
||||
loadProject(SAMPLE_PROJECT_PATH);
|
||||
JpsEncodingConfigurationService service = JpsEncodingConfigurationService.getInstance();
|
||||
|
||||
Reference in New Issue
Block a user