Maven: profiles should not be inherited (it causes inheriting modules from profiles)

This commit is contained in:
Anton Makeev
2012-02-17 15:50:46 +01:00
parent 0cdda33a76
commit 4cc4b351c4
4 changed files with 81 additions and 64 deletions
@@ -422,12 +422,7 @@ public class MavenProjectReader {
MavenProjectProblem.ProblemType.PARENT));
}
model = MavenServerManager.getInstance().assembleInheritance(model, parentModel);
List<MavenProfile> profiles = model.getProfiles();
for (MavenProfile each : parentModel.getProfiles()) {
addProfileIfDoesNotExist(each, profiles);
}
return model;
return MavenServerManager.getInstance().assembleInheritance(model, parentModel);
}
finally {
recursionGuard.remove(file);
@@ -208,7 +208,7 @@ public class MavenServerManager extends RemoteObjectWrapper<MavenServer> {
}
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;
}
@@ -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("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<profiles>\n" +
" <profile>\n" +
" <id>one</id>\n" +
" <modules>" +
" <module>m</module>" +
" </modules>" +
" </profile>" +
"</profiles>");
createModulePom("m", "<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>");
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("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
@@ -344,18 +375,18 @@ public class StructureImportingTest extends MavenImportingTestCase {
if (!hasMavenInstallation()) return;
final VirtualFile parent = createModulePom("parent",
"<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" </dependency>" +
"</dependencies>");
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" </dependency>" +
"</dependencies>");
executeGoal("parent", "install");
new WriteAction() {
@@ -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("<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
"<version>1</version>" +
"<profiles>" +
" <profile>" +
" <id>profileFromParent</id>" +
" </profile>" +
"</profiles>");
VirtualFile module = createModulePom("module",
"<groupId>test</groupId>" +
"<artifactId>module</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>parent</artifactId>" +
" <version>1</version>" +
"</parent>" +
"<profiles>" +
" <profile>" +
" <id>profileFromChild</id>" +
" </profile>" +
"</profiles>");
MavenModel p = readProject(module);
assertOrderedElementsAreEqual(ContainerUtil.map(p.getProfiles(), new Function<MavenProfile, Object>() {
@Override
public Object fun(MavenProfile profile) {
return profile.getId();
}
}), "profileFromChild", "profileFromParent");
}
public void testCorrectlyCollectProfilesFromDifferentSources() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
@@ -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("<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
@@ -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("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<profiles>" +
" <profile>" +
" <id>one</id>" +
" <modules>" +
" <module>m</module>" +
" </modules>" +
" </profile>" +
"</profiles>");
VirtualFile m = createModulePom("m", "<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>");
assertSize(1, readProject(p, "one").getModules());
assertSize(0, readProject(m, "one").getModules());
}
public void testActivatingProfilesByDefault() throws Exception {
createProjectPom("<profiles>" +
" <profile>" +