From 4cc4b351c4e141603aa7382ec095d016c314a5ac Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Fri, 17 Feb 2012 15:50:46 +0100 Subject: [PATCH] Maven: profiles should not be inherited (it causes inheriting modules from profiles) --- .../maven/project/MavenProjectReader.java | 7 +- .../idea/maven/server/MavenServerManager.java | 2 +- .../importing/StructureImportingTest.java | 53 +++++++++--- .../maven/project/MavenProjectReaderTest.java | 83 +++++++++---------- 4 files changed, 81 insertions(+), 64 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java index f1240c95aeaa..ce1cb6907529 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java @@ -422,12 +422,7 @@ public class MavenProjectReader { MavenProjectProblem.ProblemType.PARENT)); } - model = MavenServerManager.getInstance().assembleInheritance(model, parentModel); - List profiles = model.getProfiles(); - for (MavenProfile each : parentModel.getProfiles()) { - addProfileIfDoesNotExist(each, profiles); - } - return model; + return MavenServerManager.getInstance().assembleInheritance(model, parentModel); } finally { recursionGuard.remove(file); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java index 9019e02d8e9d..cd96e0e3f10a 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java @@ -208,7 +208,7 @@ public class MavenServerManager extends RemoteObjectWrapper { } params.getVMParametersList().addParametersString("-Xmx512m"); - //params.getVMParametersList().addParametersString("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5009"); + //params.getVMParametersList().addParametersString("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5009"); return params; } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java index 16f6fc4e89d6..fb31c457f070 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java @@ -24,6 +24,7 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; import org.jetbrains.idea.maven.MavenImportingTestCase; +import org.jetbrains.idea.maven.model.MavenId; import org.jetbrains.idea.maven.project.MavenProject; import java.io.File; @@ -107,6 +108,36 @@ public class StructureImportingTest extends MavenImportingTestCase { assertModules("project", "m1", "m2"); } + public void testModulesAreNotInheritedFromParentsProfiles() throws Exception { + createProjectPom("test" + + "project" + + "1" + + "pom" + + + "\n" + + " \n" + + " one\n" + + " " + + " m" + + " " + + " " + + ""); + + createModulePom("m", "test" + + "m" + + "1" + + "" + + " test" + + " project" + + " 1" + + ""); + + importProjectWithProfiles("one"); + + assertSize(1, myProjectsManager.findProject(new MavenId("test", "project", "1")).getModulePaths()); + assertSize(0, myProjectsManager.findProject(new MavenId("test", "m", "1")).getModulePaths()); + } + public void testModulesWithSlashesAtTheEnds() throws Exception { createProjectPom("test" + "project" + @@ -344,18 +375,18 @@ public class StructureImportingTest extends MavenImportingTestCase { if (!hasMavenInstallation()) return; final VirtualFile parent = createModulePom("parent", - "test" + - "parent" + - "1" + - "pom" + + "test" + + "parent" + + "1" + + "pom" + - "" + - " " + - " junit" + - " junit" + - " 4.0" + - " " + - ""); + "" + + " " + + " junit" + + " junit" + + " 4.0" + + " " + + ""); executeGoal("parent", "install"); new WriteAction() { diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java index 9a180d612115..912f8b9d1f5a 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java @@ -23,10 +23,11 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; import org.jetbrains.idea.maven.MavenTestCase; -import org.jetbrains.idea.maven.model.*; +import org.jetbrains.idea.maven.model.MavenId; +import org.jetbrains.idea.maven.model.MavenModel; +import org.jetbrains.idea.maven.model.MavenProjectProblem; +import org.jetbrains.idea.maven.model.MavenResource; import org.jetbrains.idea.maven.utils.MavenUtil; import java.io.File; @@ -493,7 +494,7 @@ public class MavenProjectReaderTest extends MavenTestCase { assertEquals("${prop2}", p.getPackaging()); } - public void testHandlingRecursionProprielyAndDoNotForgetCoClearRecursionGuard() throws Exception { + public void testHandlingRecursionProperlyAndDoNotForgetCoClearRecursionGuard() throws Exception { File repositoryPath = new File(myDir, "repository"); setRepositoryPath(repositoryPath.getPath()); @@ -999,44 +1000,6 @@ public class MavenProjectReaderTest extends MavenTestCase { assertEquals("xxx", p.getBuild().getFinalName()); } - - public void testInheritingParentProfiles() throws Exception { - createProjectPom("test" + - "parent" + - "1" + - - "" + - " " + - " profileFromParent" + - " " + - ""); - - VirtualFile module = createModulePom("module", - "test" + - "module" + - "1" + - - "" + - " test" + - " parent" + - " 1" + - "" + - - "" + - " " + - " profileFromChild" + - " " + - ""); - - MavenModel p = readProject(module); - assertOrderedElementsAreEqual(ContainerUtil.map(p.getProfiles(), new Function() { - @Override - public Object fun(MavenProfile profile) { - return profile.getId(); - } - }), "profileFromChild", "profileFromParent"); - } - public void testCorrectlyCollectProfilesFromDifferentSources() throws Exception { createProjectPom("test" + "parent" + @@ -1116,8 +1079,8 @@ public class MavenProjectReaderTest extends MavenTestCase { p = readProject(module); assertEquals(1, p.getProfiles().size()); - assertEquals("parent", p.getProfiles().get(0).getModules().get(0)); - assertEquals("pom", p.getProfiles().get(0).getSource()); + assertEquals("settings", p.getProfiles().get(0).getModules().get(0)); + assertEquals("settings.xml", p.getProfiles().get(0).getSource()); createProjectPom("test" + "parent" + @@ -1125,8 +1088,8 @@ public class MavenProjectReaderTest extends MavenTestCase { p = readProject(module); assertEquals(1, p.getProfiles().size()); - assertEquals("parentProfiles", p.getProfiles().get(0).getModules().get(0)); - assertEquals("profiles.xml", p.getProfiles().get(0).getSource()); + assertEquals("settings", p.getProfiles().get(0).getModules().get(0)); + assertEquals("settings.xml", p.getProfiles().get(0).getSource()); new WriteCommandAction.Simple(myProject) { @Override @@ -1142,6 +1105,34 @@ public class MavenProjectReaderTest extends MavenTestCase { assertEquals("settings.xml", p.getProfiles().get(0).getSource()); } + public void testModulesAreNotInheritedFromParentsProfiles() throws Exception { + VirtualFile p = createProjectPom("test" + + "project" + + "1" + + "pom" + + + "" + + " " + + " one" + + " " + + " m" + + " " + + " " + + ""); + + VirtualFile m = createModulePom("m", "test" + + "m" + + "1" + + "" + + " test" + + " project" + + " 1" + + ""); + + assertSize(1, readProject(p, "one").getModules()); + assertSize(0, readProject(m, "one").getModules()); + } + public void testActivatingProfilesByDefault() throws Exception { createProjectPom("" + " " +