Index: src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java (revision 888559)
+++ src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java (working copy)
@@ -66,6 +66,21 @@
private String jdkLevel;
/**
+ * Specify the language level to use for the features such as assert keywords (jdk 1.4)
+ * enums (jdk 1.5), or @Overrides for interface methods (jdk 1.6)
+ * Will only effect jdk 1.4+
+ * Literal values to use:
+ *
+ * - JDK_1_4
+ * - JDK_1_5
+ * - JDK_1_6
+ *
+ *
+ * @parameter expression="${jdkLanguageLevel}"
+ */
+ private String jdkLanguageLevel;
+
+ /**
* Specify the resource pattern in wildcard format, for example "?*.xml;?*.properties".
* Currently supports 4.x and 5.x.
* Because IDEA doesn't distinguish between source and resources directories, this is needed.
@@ -237,20 +252,27 @@
component.addAttribute( "project-jdk-name", jdkName );
String jdkLevel = this.jdkLevel;
+
if ( jdkLevel == null )
{
jdkLevel = System.getProperty( "java.specification.version" );
}
+ String jdkLanguageLevel = this.jdkLanguageLevel;
+
if ( jdkLevel.startsWith( "1.4" ) )
{
component.addAttribute( "assert-keyword", "true" );
component.addAttribute( "jdk-15", "false" );
+
+ setLanguageLevel(component, jdkLevel, jdkLanguageLevel);
}
else if ( jdkLevel.compareTo( "1.5" ) >= 0 )
{
component.addAttribute( "assert-keyword", "true" );
component.addAttribute( "jdk-15", "true" );
+
+ setLanguageLevel(component, jdkLevel, jdkLanguageLevel);
}
else
{
@@ -258,6 +280,30 @@
}
}
+ private void setLanguageLevel(Element component, String jdkLevel, String jdkLanguageLevel)
+ {
+ getLog().info("jdkLanguageLevel = " + jdkLanguageLevel);
+
+ if(jdkLanguageLevel == null)
+ {
+ // could do this by parsing jdkLevel but I think idea is capped at 1_6
+ switch(jdkLevel.charAt(2))
+ {
+ case 4:
+ jdkLanguageLevel = "JDK_1_4";
+ break;
+ case 5:
+ jdkLanguageLevel = "JDK_1_5";
+ break;
+ default: // cap to 1_6
+ jdkLanguageLevel = "JDK_1_6";
+ break;
+ }
+ }
+
+ component.addAttribute("languageLevel", jdkLanguageLevel);
+ }
+
/**
* Sets the wilcard resource patterns.
*