Merge branch 'optionsForAnnotationProcessor' of https://github.com/klausbayrhammer...
[idea/community.git] / plugins / maven / src / main / java / org / jetbrains / idea / maven / project / MavenProject.java
index eebaa71c0036c989e4130d191fdde4919af747c8..5757f3db9906f025f71b04e81ceb4dc510aeb73c 100644 (file)
@@ -442,9 +442,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");
@@ -489,6 +497,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();