diff --git a/maven-plugin-annotations/src/main/java/org/apache/maven/plugins/annotations/Parameter.java b/maven-plugin-annotations/src/main/java/org/apache/maven/plugins/annotations/Parameter.java
index 1acd632..b9eb61b 100644
--- a/maven-plugin-annotations/src/main/java/org/apache/maven/plugins/annotations/Parameter.java
+++ b/maven-plugin-annotations/src/main/java/org/apache/maven/plugins/annotations/Parameter.java
@@ -48,7 +48,7 @@ public @interface Parameter
* Property to use to retrieve a value. Can come from -D execution, setting properties or pom properties.
* @return property name
*/
- String expression() default "";
+ String property() default "";
/**
* parameter default value, eventually containing ${...} expressions which will be interpreted at inject time.
diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-abstract-mojo/src/main/java/org/apache/maven/plugins/AbstractFirstMojo.java b/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-abstract-mojo/src/main/java/org/apache/maven/plugins/AbstractFirstMojo.java
index 8cd2e64..87ad0dc 100644
--- a/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-abstract-mojo/src/main/java/org/apache/maven/plugins/AbstractFirstMojo.java
+++ b/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-abstract-mojo/src/main/java/org/apache/maven/plugins/AbstractFirstMojo.java
@@ -45,7 +45,7 @@ public abstract class AbstractFirstMojo
@Parameter( defaultValue = "${basedir}", readonly = true )
protected File basedir;
- @Parameter( expression = "${first.touchFile}", defaultValue = "${project.build.directory}/touch.txt",
+ @Parameter( property = "first.touchFile", defaultValue = "${project.build.directory}/touch.txt",
required = true )
protected File touchFile;
@@ -61,6 +61,4 @@ public abstract class AbstractFirstMojo
@Component( role = "org.apache.maven.artifact.metadata.ArtifactMetadataSource", roleHint = "maven" )
protected ArtifactMetadataSource artifactMetadataSource;
-
-
}
diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-mojo/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java b/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-mojo/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
index 55be47c..26b9ce6 100644
--- a/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-mojo/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
+++ b/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/module-mojo/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
@@ -36,7 +36,7 @@ public class CoreIt0014Mojo
extends AbstractMojo
{
- @Parameter( expression = "${project.build.directory}", required = true )
+ @Parameter( property = "project.build.directory", required = true )
private String outputDirectory;
public void execute()
diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java b/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java
index 6dcf140..f0a1263 100644
--- a/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java
+++ b/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java
@@ -45,7 +45,7 @@ public abstract class AbstractFirstMojo
@Parameter( defaultValue = "${basedir}", readonly = true )
protected File basedir;
- @Parameter( expression = "${first.touchFile}", defaultValue = "${project.build.directory}/touch.txt",
+ @Parameter( property = "first.touchFile", defaultValue = "${project.build.directory}/touch.txt",
required = true )
protected File touchFile;
@@ -58,9 +58,7 @@ public abstract class AbstractFirstMojo
/**
*
*/
- @Component(role = "org.apache.maven.artifact.metadata.ArtifactMetadataSource", roleHint = "maven")
+ @Component( role = "org.apache.maven.artifact.metadata.ArtifactMetadataSource", roleHint = "maven" )
protected ArtifactMetadataSource artifactMetadataSource;
-
-
}
diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java b/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
index 55be47c..26b9ce6 100644
--- a/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
+++ b/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
@@ -36,7 +36,7 @@ public class CoreIt0014Mojo
extends AbstractMojo
{
- @Parameter( expression = "${project.build.directory}", required = true )
+ @Parameter( property = "project.build.directory", required = true )
private String outputDirectory;
public void execute()
diff --git a/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java b/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
index 55be47c..26b9ce6 100644
--- a/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
+++ b/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/CoreIt0014Mojo.java
@@ -36,7 +36,7 @@ public class CoreIt0014Mojo
extends AbstractMojo
{
- @Parameter( expression = "${project.build.directory}", required = true )
+ @Parameter( property = "project.build.directory", required = true )
private String outputDirectory;
public void execute()
diff --git a/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/FirstMojo.java b/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/FirstMojo.java
index 70b2ef2..f5814a3 100644
--- a/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/FirstMojo.java
+++ b/maven-plugin-plugin/src/it/java-basic-annotations/src/main/java/org/apache/maven/plugin/coreit/FirstMojo.java
@@ -48,7 +48,7 @@ public class FirstMojo
@Parameter( defaultValue = "${basedir}", readonly = true )
private File basedir;
- @Parameter( expression = "first.touchFile", defaultValue = "${project.build.directory}/touch.txt",
+ @Parameter( property = "first.touchFile", defaultValue = "${project.build.directory}/touch.txt",
required = true )
private File touchFile;
diff --git a/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/DummyReport.java b/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/DummyReport.java
index f7ed0c5..9eabcd5 100644
--- a/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/DummyReport.java
+++ b/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/DummyReport.java
@@ -58,7 +58,7 @@ public class DummyReport
/**
* The Maven Project.
*/
- @Parameter( expression = "${project}", readonly = true, required = true )
+ @Parameter( property = "project", readonly = true, required = true )
private MavenProject project;
@@ -67,7 +67,7 @@ public class DummyReport
*
* @since 2.4
*/
- @Parameter( expression = "${goalPrefix}" )
+ @Parameter( property = "goalPrefix" )
protected String goalPrefix;
/**
@@ -75,7 +75,7 @@ public class DummyReport
*
* @since 2.8
*/
- @Parameter( defaultValue = "false", expression = "${maven.plugin.skip}" )
+ @Parameter( defaultValue = "false", property = "maven.plugin.skip" )
private boolean skip;
/**
@@ -83,7 +83,7 @@ public class DummyReport
*
* @since 2.8
*/
- @Parameter( defaultValue = "false", expression = "${maven.plugin.report.skip}" )
+ @Parameter( defaultValue = "false", property = "maven.plugin.report.skip" )
private boolean skipReport;
/**
diff --git a/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/MyMojo.java b/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/MyMojo.java
index 88e3f64..82a95ab 100644
--- a/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/MyMojo.java
+++ b/maven-plugin-plugin/src/it/plugin-report-annotations/src/main/java/org/MyMojo.java
@@ -54,7 +54,7 @@ public class MyMojo
* @deprecated Just testing.
*/
@SuppressWarnings( "unused" )
- @Parameter( expression = "${string}", defaultValue = "${project.version}/" )
+ @Parameter( property = "string", defaultValue = "${project.version}/" )
private String string;
public void execute()
diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java
index 73fdb1d..fdc8fb0 100644
--- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java
@@ -29,6 +29,7 @@ import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.plugin.descriptor.DuplicateParameterException;
+import org.apache.maven.plugin.descriptor.InvalidParameterException;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
@@ -426,7 +427,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
private List toMojoDescriptors( Map mojoAnnotatedClasses,
PluginToolsRequest request, Map javaClassesMap )
- throws DuplicateParameterException
+ throws DuplicateParameterException, InvalidParameterException
{
List mojoDescriptors = new ArrayList( mojoAnnotatedClasses.size() );
for ( MojoAnnotatedClass mojoAnnotatedClass : mojoAnnotatedClasses.values() )
@@ -490,7 +491,14 @@ public class JavaAnnotationsMojoDescriptorExtractor
parameter.setDeprecated( parameterAnnotationContent.getDeprecated() );
parameter.setDescription( parameterAnnotationContent.getDescription() );
parameter.setEditable( !parameterAnnotationContent.readonly() );
- parameter.setExpression( parameterAnnotationContent.expression() );
+ String property = parameterAnnotationContent.property();
+ if ( StringUtils.contains( property, '$' ) || StringUtils.contains( property, '{' )
+ || StringUtils.contains( property, '}' ) )
+ {
+ throw new InvalidParameterException( "Invalid property for parameter '" + parameter.getName() + "', "
+ + "forbidden characters ${}: " + property, null );
+ }
+ parameter.setExpression( StringUtils.isEmpty( property ) ? "" : "${" + property + "}" );
parameter.setType( parameterAnnotationContent.getClassName() );
parameter.setSince( parameterAnnotationContent.getSince() );
parameter.setRequired( parameterAnnotationContent.required() );
diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/ParameterAnnotationContent.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/ParameterAnnotationContent.java
index f734339..a095858 100644
--- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/ParameterAnnotationContent.java
+++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/ParameterAnnotationContent.java
@@ -34,7 +34,7 @@ public class ParameterAnnotationContent
private String alias;
- private String expression;
+ private String property;
private String defaultValue;
@@ -50,12 +50,12 @@ public class ParameterAnnotationContent
this.className = className;
}
- public ParameterAnnotationContent( String fieldName, String alias, String expression, String defaultValue,
+ public ParameterAnnotationContent( String fieldName, String alias, String property, String defaultValue,
boolean required, boolean readonly, String className )
{
this( fieldName, className );
this.alias = alias;
- this.expression = expression;
+ this.property = property;
this.defaultValue = defaultValue;
this.required = required;
this.readonly = readonly;
@@ -71,14 +71,14 @@ public class ParameterAnnotationContent
this.alias = alias;
}
- public String expression()
+ public String property()
{
- return expression;
+ return property;
}
- public void expression( String expression )
+ public void property( String property )
{
- this.expression = expression;
+ this.property = property;
}
public String defaultValue()
@@ -133,7 +133,7 @@ public class ParameterAnnotationContent
sb.append( super.toString() );
sb.append( "ParameterAnnotationContent" );
sb.append( "{alias='" ).append( alias ).append( '\'' );
- sb.append( ", expression='" ).append( expression ).append( '\'' );
+ sb.append( ", property='" ).append( property ).append( '\'' );
sb.append( ", defaultValue='" ).append( defaultValue ).append( '\'' );
sb.append( ", required=" ).append( required );
sb.append( ", readonly=" ).append( readonly );
@@ -177,7 +177,7 @@ public class ParameterAnnotationContent
{
return false;
}
- if ( expression != null ? !expression.equals( that.expression ) : that.expression != null )
+ if ( property != null ? !property.equals( that.property ) : that.property != null )
{
return false;
}
@@ -190,7 +190,7 @@ public class ParameterAnnotationContent
{
int result = alias != null ? alias.hashCode() : 0;
result = 31 * result + ( getFieldName() != null ? getFieldName().hashCode() : 0 );
- result = 31 * result + ( expression != null ? expression.hashCode() : 0 );
+ result = 31 * result + ( property != null ? property.hashCode() : 0 );
result = 31 * result + ( defaultValue != null ? defaultValue.hashCode() : 0 );
result = 31 * result + ( required ? 1 : 0 );
result = 31 * result + ( readonly ? 1 : 0 );
diff --git a/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/FooMojo.java b/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/FooMojo.java
index f44409c..15b0add 100644
--- a/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/FooMojo.java
+++ b/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/FooMojo.java
@@ -42,14 +42,14 @@ public class FooMojo
* the cool bar to go
* @since 1.0
*/
- @Parameter( expression = "${thebar}", required = true, defaultValue = "coolbar" )
+ @Parameter( property = "thebar", required = true, defaultValue = "coolbar" )
protected String bar;
/**
* beer for non french folks
* @deprecated wine is better
*/
- @Parameter( expression = "${thebeer}", defaultValue = "coolbeer" )
+ @Parameter( property = "thebeer", defaultValue = "coolbeer" )
protected String beer;
/**
diff --git a/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java b/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java
index 3344417..a4738bd 100644
--- a/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java
+++ b/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java
@@ -83,8 +83,8 @@ public class TestAnnotationsReader
Collection parameters = mojoAnnotatedClass.getParameters().values();
Assertions.assertThat( parameters ).isNotNull().isNotEmpty().hasSize( 2 ).contains(
- new ParameterAnnotationContent( "bar", null, "${thebar}", "coolbar", true, false, String.class.getName() ),
- new ParameterAnnotationContent( "beer", null, "${thebeer}", "coolbeer", false, false,
+ new ParameterAnnotationContent( "bar", null, "thebar", "coolbar", true, false, String.class.getName() ),
+ new ParameterAnnotationContent( "beer", null, "thebeer", "coolbeer", false, false,
String.class.getName() ) );
}
}