blob: dcc5c414b0ef2556c1949c995119873ef38de579 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.idea.maven.importing;
import com.intellij.compiler.CompilerConfiguration;
import com.intellij.compiler.impl.javaCompiler.javac.JavacConfiguration;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
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.project.MavenProject;
import java.io.File;
import java.util.List;
public class StructureImportingTest extends MavenImportingTestCase {
public void testInheritProjectJdkForModules() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
assertTrue(ModuleRootManager.getInstance(getModule("project")).isSdkInherited());
}
public void testDoNotResetSomeSettingsAfterReimport() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
Sdk sdk = setupJdkForModule("project");
importProject();
assertFalse(ModuleRootManager.getInstance(getModule("project")).isSdkInherited());
assertEquals(sdk, ModuleRootManager.getInstance(getModule("project")).getSdk());
}
public void testModulesWithSlashesRegularAndBack() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<modules>" +
" <module>dir\\m1</module>" +
" <module>dir/m2</module>" +
"</modules>");
createModulePom("dir/m1", "<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>");
createModulePom("dir/m2", "<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "m1", "m2");
List<MavenProject> roots = myProjectsTree.getRootProjects();
assertEquals(1, roots.size());
assertEquals("project", roots.get(0).getMavenId().getArtifactId());
List<MavenProject> modules = myProjectsTree.getModules(roots.get(0));
assertEquals(2, modules.size());
assertEquals("m1", modules.get(0).getMavenId().getArtifactId());
assertEquals("m2", modules.get(1).getMavenId().getArtifactId());
}
public void testModulesAreNamedAfterArtifactIds() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<name>name</name>" +
"<modules>" +
" <module>dir1</module>" +
" <module>dir2</module>" +
"</modules>");
createModulePom("dir1", "<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>" +
"<name>name1</name>");
createModulePom("dir2", "<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>" +
"<name>name2</name>");
importProject();
assertModules("project", "m1", "m2");
}
public void testModulesWithSlashesAtTheEnds() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<modules>" +
" <module>m1/</module>" +
" <module>m2\\</module>" +
" <module>m3//</module>" +
"</modules>");
createModulePom("m1", "<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>");
createModulePom("m2", "<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>");
createModulePom("m3", "<groupId>test</groupId>" +
"<artifactId>m3</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "m1", "m2", "m3");
}
public void testModulesWithSameArtifactId() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<modules>" +
" <module>dir1/m</module>" +
" <module>dir2/m</module>" +
"</modules>");
createModulePom("dir1/m", "<groupId>test.group1</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>");
createModulePom("dir2/m", "<groupId>test.group2</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "m (1) (test.group1)", "m (2) (test.group2)");
}
public void testModulesWithSameArtifactIdAndGroup() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<modules>" +
" <module>dir1/m</module>" +
" <module>dir2/m</module>" +
"</modules>");
createModulePom("dir1/m", "<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>");
createModulePom("dir2/m", "<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "m (1)", "m (2)");
}
public void testModuleWithRelativePath() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<modules>" +
" <module>../m</module>" +
"</modules>");
createModulePom("../m", "<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "m");
}
public void testModuleWithRelativeParent() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>parent</artifactId>" +
" <version>1</version>" +
" <relativePath>../parent</relativePath>" +
"</parent>");
createModulePom("../parent", "<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project");
}
public void testModulePathsAsProperties() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<properties>" +
" <module1>m1</module1>" +
" <module2>m2</module2>" +
"</properties>" +
"<modules>" +
" <module>${module1}</module>" +
" <module>${module2}</module>" +
"</modules>");
createModulePom("m1", "<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>");
createModulePom("m2", "<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "m1", "m2");
List<MavenProject> roots = myProjectsTree.getRootProjects();
assertEquals(1, roots.size());
assertEquals("project", roots.get(0).getMavenId().getArtifactId());
List<MavenProject> modules = myProjectsTree.getModules(roots.get(0));
assertEquals(2, modules.size());
assertEquals("m1", modules.get(0).getMavenId().getArtifactId());
assertEquals("m2", modules.get(1).getMavenId().getArtifactId());
}
public void testRecursiveParent() throws Exception {
importProject("<parent>" +
" <groupId>org.apache.maven.archetype.test</groupId>" +
" <artifactId>test-create-2</artifactId>" +
" <version>1.0-SNAPSHOT</version>" +
"</parent>" +
"<artifactId>test-create-2</artifactId>" +
"<name>Maven archetype Test create-2-subModule</name>" +
"<packaging>pom</packaging>");
}
public void testParentWithoutARelativePath() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<properties>" +
" <moduleName>m1</moduleName>" +
"</properties>" +
"<modules>" +
" <module>modules/m</module>" +
"</modules>");
createModulePom("modules/m", "<groupId>test</groupId>" +
"<artifactId>${moduleName}</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>");
importProject();
assertModules("project", "m1");
List<MavenProject> roots = myProjectsTree.getRootProjects();
assertEquals(1, roots.size());
assertEquals("project", roots.get(0).getMavenId().getArtifactId());
List<MavenProject> modules = myProjectsTree.getModules(roots.get(0));
assertEquals(1, modules.size());
assertEquals("m1", modules.get(0).getMavenId().getArtifactId());
}
public void testModuleWithPropertiesWithParentWithoutARelativePath() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<properties>" +
" <moduleName>m1</moduleName>" +
"</properties>" +
"<modules>" +
" <module>modules/m</module>" +
"</modules>");
createModulePom("modules/m", "<groupId>test</groupId>" +
"<artifactId>${moduleName}</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>");
importProject();
assertModules("project", "m1");
List<MavenProject> roots = myProjectsTree.getRootProjects();
assertEquals(1, roots.size());
assertEquals("project", roots.get(0).getMavenId().getArtifactId());
List<MavenProject> modules = myProjectsTree.getModules(roots.get(0));
assertEquals(1, modules.size());
assertEquals("m1", modules.get(0).getMavenId().getArtifactId());
}
public void testParentInLocalRepository() throws Exception {
if (!hasMavenInstallation()) return;
final VirtualFile parent = createModulePom("parent",
"<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>");
executeGoal("parent", "install");
new WriteAction() {
protected void run(Result result) throws Throwable {
parent.delete(null);
}
}.execute();
createProjectPom("<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>parent</artifactId>" +
" <version>1</version>" +
"</parent>");
importProject();
assertModules("m");
assertModuleLibDeps("m", "Maven: junit:junit:4.0");
}
public void testParentInRemoteRepository() throws Exception {
String pathToJUnit = "asm/asm-parent/3.0";
File parentDir = new File(getRepositoryPath(), pathToJUnit);
removeFromLocalRepository(pathToJUnit);
assertFalse(parentDir.exists());
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>asm</groupId>" +
" <artifactId>asm-parent</artifactId>" +
" <version>3.0</version>" +
"</parent>");
importProject();
assertModules("project");
assertTrue(parentDir.exists());
assertEquals("asm-parent", myProjectsTree.getRootProjects().get(0).getParentId().getArtifactId());
assertTrue(new File(parentDir, "asm-parent-3.0.pom").exists());
}
public void testCreatingModuleGroups() throws Exception {
VirtualFile p1 = createModulePom("project1",
"<groupId>test</groupId>" +
"<artifactId>project1</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m1</module>" +
"</modules>");
createModulePom("project1/m1",
"<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>");
VirtualFile p2 = createModulePom("project2",
"<groupId>test</groupId>" +
"<artifactId>project2</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m2</module>" +
"</modules>");
createModulePom("project2/m2",
"<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m3</module>" +
"</modules>");
createModulePom("project2/m2/m3",
"<groupId>test</groupId>" +
"<artifactId>m3</artifactId>" +
"<version>1</version>");
getMavenImporterSettings().setCreateModuleGroups(true);
importProjects(p1, p2);
assertModules("project1", "project2", "m1", "m2", "m3");
assertModuleGroupPath("project1", "project1 and modules");
assertModuleGroupPath("m1", "project1 and modules");
assertModuleGroupPath("project2", "project2 and modules");
assertModuleGroupPath("m2", "project2 and modules", "m2 and modules");
assertModuleGroupPath("m3", "project2 and modules", "m2 and modules");
}
public void testDoesNotCreateUnnecessaryTopLevelModuleGroup() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m1</module>" +
"</modules>");
createModulePom("m1",
"<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m2</module>" +
"</modules>");
createModulePom("m1/m2",
"<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>");
getMavenImporterSettings().setCreateModuleGroups(true);
importProject();
assertModules("project", "m1", "m2");
assertModuleGroupPath("project");
assertModuleGroupPath("m1", "m1 and modules");
assertModuleGroupPath("m2", "m1 and modules");
}
public void testModuleGroupsWhenNotCreatingModulesForAggregatorProjects() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>module1</module>" +
"</modules>");
createModulePom("module1",
"<groupId>test</groupId>" +
"<artifactId>module1</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>module2</module>" +
"</modules>");
createModulePom("module1/module2",
"<groupId>test</groupId>" +
"<artifactId>module2</artifactId>" +
"<version>1</version>");
getMavenImporterSettings().setCreateModuleGroups(true);
getMavenImporterSettings().setCreateModulesForAggregators(false);
importProject();
assertModules("module2");
assertModuleGroupPath("module2", "module1 and modules");
}
public void testReimportingProjectWhenCreatingModuleGroupsSettingChanged() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>module1</module>" +
"</modules>");
createModulePom("module1",
"<groupId>test</groupId>" +
"<artifactId>module1</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>module2</module>" +
"</modules>");
createModulePom("module1/module2",
"<groupId>test</groupId>" +
"<artifactId>module2</artifactId>" +
"<version>1</version>");
importProject();
assertModules("project", "module1", "module2");
assertModuleGroupPath("module2");
getMavenImporterSettings().setCreateModuleGroups(true);
myProjectsManager.performScheduledImportInTests();
assertModuleGroupPath("module2", "module1 and modules");
}
public void testModuleGroupsWhenProjectWithDuplicateNameEmerges() throws Exception {
VirtualFile p1 = createModulePom("project1",
"<groupId>test</groupId>" +
"<artifactId>project1</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m1</module>" +
"</modules>");
createModulePom("project1/m1",
"<groupId>test</groupId>" +
"<artifactId>module</artifactId>" +
"<version>1</version>");
VirtualFile p2 = createModulePom("project2",
"<groupId>test</groupId>" +
"<artifactId>project2</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>");
//createModulePom("m2",
// "<groupId>test</groupId>" +
// "<artifactId>m2</artifactId>" +
// "<version>1</version>" +
// "<packaging>pom</packaging>");
getMavenImporterSettings().setCreateModuleGroups(true);
importProjects(p1, p2);
assertModules("project1", "project2", "module");
assertModuleGroupPath("project1", "project1 and modules");
assertModuleGroupPath("module", "project1 and modules");
p2 = createModulePom("project2",
"<groupId>test</groupId>" +
"<artifactId>project2</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<modules>" +
" <module>m2</module>" +
"</modules>");
createModulePom("project2/m2",
"<groupId>test</groupId>" +
"<artifactId>module</artifactId>" +
"<version>1</version>");
updateProjectsAndImport(p2); // should not fail to map module names.
assertModules("project1", "project2", "module", "module (1)");
assertModuleGroupPath("project1", "project1 and modules");
assertModuleGroupPath("module", "project1 and modules");
assertModuleGroupPath("project2", "project2 and modules");
assertModuleGroupPath("module (1)", "project2 and modules");
}
public void testLanguageLevel() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.4</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertEquals(LanguageLevel.JDK_1_4, getLanguageLevelForModule());
}
public void testLanguageLevel6() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.6</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertEquals(LanguageLevel.JDK_1_6, getLanguageLevelForModule());
}
public void testLanguageLevelWhenCompilerPluginIsNotSpecified() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
assertModules("project");
assertNull(getLanguageLevelForModule());
}
public void testLanguageLevelWhenConfigurationIsNotSpecified() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertNull(getLanguageLevelForModule());
}
public void testLanguageLevelWhenSourceLanguageLevelIsNotSpecified() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertNull(getLanguageLevelForModule());
}
public void testLanguageLevelFromPluginManagementSection() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <pluginManagement>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.4</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
" </pluginManagement>" +
"</build>");
assertModules("project");
assertEquals(LanguageLevel.JDK_1_4, getLanguageLevelForModule());
}
public void testLanguageLevelFromParentPluginManagementSection() throws Exception {
createModulePom("parent",
"<groupId>test</groupId>" +
"<artifactId>parent</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<build>" +
" <pluginManagement>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.4</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
" </pluginManagement>" +
"</build>");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>parent</artifactId>" +
" <version>1</version>" +
" <relativePath>parent/pom.xml</relativePath>" +
"</parent>");
assertModules("project");
assertEquals(LanguageLevel.JDK_1_4, getLanguageLevelForModule());
}
public void testOverridingLanguageLevelFromPluginManagementSection() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <pluginManagement>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.4</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
" </pluginManagement>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.3</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertEquals(LanguageLevel.JDK_1_3, getLanguageLevelForModule());
}
public void testInheritingLanguageLevelFromPluginManagementSection() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <pluginManagement>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <source>1.4</source>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
" </pluginManagement>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.apache.maven.plugins</groupId>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <target>1.5</target>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertEquals(LanguageLevel.JDK_1_4, getLanguageLevelForModule());
}
private LanguageLevel getLanguageLevelForModule() {
return LanguageLevelModuleExtension.getInstance(getModule("project")).getLanguageLevel();
}
public void testSettingTargetLevel() throws Exception {
JavacConfiguration.getOptions(myProject, JavacConfiguration.class).ADDITIONAL_OPTIONS_STRING = "-Xmm500m -Xms128m -target 1.5";
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <target>1.3</target>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertEquals("-Xmm500m -Xms128m", JavacConfiguration.getOptions(myProject, JavacConfiguration.class).ADDITIONAL_OPTIONS_STRING.trim());
Module module = getModule("project");
String targetLevel = CompilerConfiguration.getInstance(myProject).getBytecodeTargetLevel(module);
assertEquals("1.3", targetLevel);
}
public void testSettingTargetLevelFromParent() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<packaging>pom</packaging>" +
"<version>1</version>" +
"<modules>" +
" <module>m1</module>" +
" <module>m2</module>" +
"</modules>" +
"<properties>" +
"<maven.compiler.target>1.3</maven.compiler.target>" +
"</properties>");
createModulePom("m1", "<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<version>1</version>" +
"<parent>" +
"<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"</parent>");
createModulePom("m2", "<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<version>1</version>" +
"<parent>" +
"<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"</parent>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <artifactId>maven-compiler-plugin</artifactId>" +
" <configuration>" +
" <target>1.5</target>" +
" </configuration>" +
" </plugin>" +
" </plugins>" +
"</build>");
importProject();
assertEquals("1.3", CompilerConfiguration.getInstance(myProject).getBytecodeTargetLevel(getModule("project")));
assertEquals("1.3", CompilerConfiguration.getInstance(myProject).getBytecodeTargetLevel(getModule("m1")));
assertEquals("1.5", CompilerConfiguration.getInstance(myProject).getBytecodeTargetLevel(getModule("m2")));
}
public void testProjectWithBuiltExtension() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <extensions>" +
" <extension>" +
" <groupId>org.apache.maven.wagon</groupId>" +
" <artifactId>wagon-webdav</artifactId>" +
" <version>1.0-beta-2</version>" +
" </extension>" +
" </extensions>" +
"</build>");
assertModules("project");
}
public void testProjectWithInvalidBuildExtension() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <extensions>" +
" <extension>" +
" <groupId>xxx</groupId>" +
" <artifactId>yyy</artifactId>" +
" <version>1</version>" +
" </extension>" +
" </extensions>" +
"</build>");
assertModules("project"); // shouldn't throw any exception
}
public void testUsingPropertyInBuildExtensionsOfChildModule() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
"<properties>" +
" <xxx>1.0-beta-2</xxx>" +
"</properties>" +
"<modules>" +
" <module>m</module>" +
"</modules>");
createModulePom("m", "<groupId>test</groupId>" +
"<artifactId>m</artifactId>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>" +
"<build>" +
" <extensions>" +
" <extension>" +
" <groupId>org.apache.maven.wagon</groupId>" +
" <artifactId>wagon-webdav</artifactId>" +
" <version>${xxx}</version>" +
" </extension>" +
" </extensions>" +
"</build>");
importProject();
assertModules("project", "m");
}
public void testFileProfileActivationInParentPom() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
" <profiles>" +
" <profile>" +
" <id>xxx</id>" +
" <dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" </dependency>" +
" </dependencies>" +
" <activation>" +
" <file>" +
" <exists>src/io.properties</exists>" +
" </file>" +
" </activation>" +
" </profile>" +
" </profiles>" +
"<modules>" +
" <module>m1</module>" +
" <module>m2</module>" +
"</modules>");
createModulePom("m1", "<groupId>test</groupId>" +
"<artifactId>m1</artifactId>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>");
createModulePom("m2", "<groupId>test</groupId>" +
"<artifactId>m2</artifactId>" +
"<parent>" +
" <groupId>test</groupId>" +
" <artifactId>project</artifactId>" +
" <version>1</version>" +
"</parent>");
createProjectSubFile("m2/src/io.properties", "");
importProject();
assertModules("project", "m1", "m2");
assertModuleLibDeps("m1");
assertModuleLibDeps("m2", "Maven: junit:junit:4.0");
}
public void testProjectWithProfilesXmlFile() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>${junit.version}</version>" +
" </dependency>" +
"</dependencies>");
createProfilesXml("<profile>" +
" <id>one</id>" +
" <activation>" +
" <activeByDefault>false</activeByDefault>" +
" </activation>" +
" <properties>" +
" <junit.version>4.0</junit.version>" +
" </properties>" +
"</profile>" +
"<profile>" +
" <id>two</id>" +
" <activation>" +
" <activeByDefault>false</activeByDefault>" +
" </activation>" +
" <properties>" +
" <junit.version>3.8.1</junit.version>" +
" </properties>" +
"</profile>");
importProjectWithProfiles("one");
assertModules("project");
assertModuleLibDeps("project", "Maven: junit:junit:4.0");
importProjectWithProfiles("two");
assertModules("project");
assertModuleLibDeps("project", "Maven: junit:junit:3.8.1");
}
public void testProjectWithOldProfilesXmlFile() throws Exception {
ignore(); // not supported by 2.2
}
public void testProjectWithProfilesXmlWithNewRootTagFile() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>${junit.version}</version>" +
" </dependency>" +
"</dependencies>");
createProfilesXml("<profile>" +
" <id>one</id>" +
" <activation>" +
" <activeByDefault>false</activeByDefault>" +
" </activation>" +
" <properties>" +
" <junit.version>4.0</junit.version>" +
" </properties>" +
"</profile>" +
"<profile>" +
" <id>two</id>" +
" <activation>" +
" <activeByDefault>false</activeByDefault>" +
" </activation>" +
" <properties>" +
" <junit.version>3.8.1</junit.version>" +
" </properties>" +
"</profile>");
importProjectWithProfiles("one");
assertModules("project");
assertModuleLibDeps("project", "Maven: junit:junit:4.0");
importProjectWithProfiles("two");
assertModules("project");
assertModuleLibDeps("project", "Maven: junit:junit:3.8.1");
}
public void testProjectWithDefaultProfileInProfilesXmlFile() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>${junit.version}</version>" +
" </dependency>" +
"</dependencies>");
createProfilesXml("<profile>" +
" <id>one</id>" +
" <activation>" +
" <activeByDefault>true</activeByDefault>" +
" </activation>" +
" <properties>" +
" <junit.version>4.0</junit.version>" +
" </properties>" +
"</profile>");
importProject();
assertModules("project");
assertModuleLibDeps("project", "Maven: junit:junit:4.0");
}
public void testRefreshFSAfterImport() throws Exception {
myProjectRoot.getChildren(); // make sure fs is cached
new File(myProjectRoot.getPath(), "foo").mkdirs();
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
assertNotNull(myProjectRoot.findChild("foo"));
}
}