From 7440dad232c22eb5e4bc1fa802262d1f5fb90658 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Wed, 1 Apr 2015 19:27:13 +0300 Subject: [PATCH] IDEA-138564 Maven: removed configuration/target element in maven-compiler-plugin does not update target bytecode version in Settings IDEA-138571 Maven+AspectJ: if for the same module both maven-compiler-plugin and aspectj-maven-plugin set the target bytecode version, use aspectj one --- .../importing/configurers/MavenCompilerConfigurer.java | 10 ++++++++-- .../idea/maven/importing/ReimportingTest.java | 7 +++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/configurers/MavenCompilerConfigurer.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/configurers/MavenCompilerConfigurer.java index d946c15066a4..54f0463888f4 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/configurers/MavenCompilerConfigurer.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/configurers/MavenCompilerConfigurer.java @@ -20,6 +20,7 @@ import com.intellij.openapi.compiler.options.ExcludeEntryDescription; import com.intellij.openapi.compiler.options.ExcludesConfiguration; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ObjectUtils; @@ -31,16 +32,21 @@ import org.jetbrains.idea.maven.project.MavenProject; * @author Sergey Evdokimov */ public class MavenCompilerConfigurer extends MavenModuleConfigurer { + + public static final Key IGNORE_MAVEN_COMPILER_TARGET_KEY = Key.create("idea.maven.skip.compiler.target.level"); + @Override public void configure(@NotNull MavenProject mavenProject, @NotNull Project project, @Nullable Module module) { if (module == null) return; CompilerConfiguration configuration = CompilerConfiguration.getInstance(project); - String targetLevel = mavenProject.getTargetLevel(); - if (targetLevel != null || configuration.getBytecodeTargetLevel(module) == null) { + Boolean ignoreMavenCompilerTargetOption = module.getUserData(IGNORE_MAVEN_COMPILER_TARGET_KEY); + if (ignoreMavenCompilerTargetOption == null || !ignoreMavenCompilerTargetOption.booleanValue()) { + String targetLevel = mavenProject.getTargetLevel(); // default source and target settings of maven-compiler-plugin is 1.5, see details at http://maven.apache.org/plugins/maven-compiler-plugin configuration.setBytecodeTargetLevel(module, ObjectUtils.notNull(targetLevel, "1.5")); } + module.putUserData(IGNORE_MAVEN_COMPILER_TARGET_KEY, Boolean.FALSE); // Exclude src/main/archetype-resources VirtualFile dir = VfsUtil.findRelativeFile(mavenProject.getDirectoryFile(), "src", "main", "resources", "archetype-resources"); diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/ReimportingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/ReimportingTest.java index 57a405c7a40e..7f52b7d999d7 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/ReimportingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/ReimportingTest.java @@ -292,6 +292,13 @@ public class ReimportingTest extends MavenImportingTestCase { importProject(); assertEquals("1.6", CompilerConfiguration.getInstance(myProject).getBytecodeTargetLevel(getModule("m1"))); + + // after configuration/target element delete in maven-compiler-plugin CompilerConfiguration#getBytecodeTargetLevel should be also updated + createModulePom("m1", "test" + + "project" + + "1"); + importProject(); + assertEquals("1.5", CompilerConfiguration.getInstance(myProject).getBytecodeTargetLevel(getModule("m1"))); } private static String createPomXmlWithModuleDependency(final String dependencyType) {