fixes IDEA-128528
authorKlaus Bayrhammer <bayrhammer.klaus@gmail.com>
Sun, 15 Feb 2015 15:39:29 +0000 (16:39 +0100)
committerKlaus Bayrhammer <bayrhammer.klaus@gmail.com>
Sun, 15 Feb 2015 15:39:29 +0000 (16:39 +0100)
loads annotation processor options from bsc.maven.plugin

plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java

index 01fc83800372dd0e2bad3bf4fe69b1d0de354c1f..7fd7e8f29c374b4e4c5e5e4bcb3b64add0b42bdb 100644 (file)
@@ -441,9 +441,17 @@ public class MavenProject {
 
   public Map<String, String> getAnnotationProcessorOptions() {
     Element compilerConfig = getCompilerConfig();
+    if (compilerConfig != null) {
+      return getAnnotationProcessorOptionsFromCompilerConfig(compilerConfig);
+    }
+    MavenPlugin bscMavenPlugin = findPlugin("org.bsc.maven", "maven-processor-plugin");
+    if (bscMavenPlugin != null) {
+      return getAnnotationProcessorOptionsFromProcessorPlugin(bscMavenPlugin);
+    }
+    return Collections.emptyMap();
+  }
 
-    if (compilerConfig == null) return Collections.emptyMap();
-
+  private Map<String, String> getAnnotationProcessorOptionsFromCompilerConfig(Element compilerConfig) {
     Map<String, String> res = null;
 
     String compilerArgument = compilerConfig.getChildText("compilerArgument");
@@ -488,6 +496,21 @@ public class MavenProject {
     return res;
   }
 
+  private Map<String, String> getAnnotationProcessorOptionsFromProcessorPlugin(MavenPlugin bscMavenPlugin) {
+    Element cfg = bscMavenPlugin.getGoalConfiguration("process");
+    if (cfg == null) {
+      cfg = bscMavenPlugin.getConfigurationElement();
+    }
+    LinkedHashMap<String, String> res = new LinkedHashMap<String, String>();
+    if (cfg != null) {
+      List<Element> options = cfg.getChild("options").getChildren();
+      for (Element option : options) {
+        res.put(option.getName(), option.getText());
+      }
+    }
+    return res;
+  }
+
   @Nullable
   public List<String> getDeclaredAnnotationProcessors() {
     Element compilerConfig = getCompilerConfig();