diff --git a/maven-plugin-plugin/pom.xml b/maven-plugin-plugin/pom.xml
index 9ba7252..c52dcfe 100644
--- a/maven-plugin-plugin/pom.xml
+++ b/maven-plugin-plugin/pom.xml
@@ -61,7 +61,7 @@
1.0-alpha-10
1.0-alpha-10
- [2.5-SNAPSHOT,)
+ 2.5-SNAPSHOT
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
index 88bef11..f3d0a3e 100644
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
+++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
@@ -61,6 +61,14 @@ public abstract class AbstractGeneratorMojo
*/
protected MojoScanner mojoScanner;
+ /**
+ * The file encoding of the source files.
+ *
+ * @parameter expression="${encoding}" default-value="ISO-8859-1"
+ * @since 2.5
+ */
+ protected String encoding;
+
/**
* The goal prefix that will appear before the ":".
*
@@ -147,7 +155,7 @@ public abstract class AbstractGeneratorMojo
{
pluginDescriptor.setDependencies( PluginUtils.toComponentDependencies( project.getRuntimeDependencies() ) );
- PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
+ PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ).setEncoding( encoding );
mojoScanner.populatePluginDescriptor( request );
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
index dc58598..ba7ef43 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
@@ -5,9 +5,8 @@ import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
/**
- * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components
- * used to extract {@link MojoDescriptor} instances from different types of metadata for a given
- * plugin.
+ * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
+ * {@link MojoDescriptor} instances from different types of metadata for a given plugin.
*
* @author jdcasey
*/
@@ -16,8 +15,11 @@ public class DefaultPluginToolsRequest
{
private PluginDescriptor pluginDescriptor;
+
private MavenProject project;
-
+
+ private String encoding = "ISO-8859-1";
+
public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
{
this.project = project;
@@ -31,7 +33,7 @@ public class DefaultPluginToolsRequest
{
return pluginDescriptor;
}
-
+
/**
* {@inheritDoc}
*/
@@ -40,4 +42,26 @@ public class DefaultPluginToolsRequest
return project;
}
+ /**
+ * {@inheritDoc}
+ */
+ public String getEncoding()
+ {
+ return this.encoding;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public PluginToolsRequest setEncoding( String encoding )
+ {
+ if ( encoding == null )
+ {
+ throw new IllegalArgumentException( "unspecified source file encoding" );
+ }
+ this.encoding = encoding;
+
+ return this;
+ }
+
}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java
index d385e5a..f35fb40 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java
@@ -24,4 +24,16 @@ public interface PluginToolsRequest
*/
PluginDescriptor getPluginDescriptor();
+ /**
+ * Gets the file encoding of the source files.
+ *
+ * @return The file encoding of the source files, never null.
+ */
+ public String getEncoding();
+
+ /**
+ * @see PluginToolsRequest#getEncoding()
+ */
+ public PluginToolsRequest setEncoding( String encoding );
+
}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java
index f914fff..0229152 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java
@@ -238,4 +238,4 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
*/
protected abstract String getScriptFileExtension( PluginToolsRequest request );
-}
\ No newline at end of file
+}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java
index fddbf81..1eba4f4 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java
@@ -56,6 +56,7 @@ public interface MojoDescriptorExtractor
* @return a list of mojo descriptors.
* @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any
+ * @since 2.5
*/
List execute( PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException;
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java
index dc77c64..e28911c 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java
@@ -184,4 +184,5 @@ public class DefaultMojoScanner
}
}
}
-}
\ No newline at end of file
+
+}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java
index a4f7146..d50ea98 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java
@@ -53,6 +53,7 @@ public interface MojoScanner
* @param pluginDescriptor not null
* @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any
+ * @since 2.5
*/
void populatePluginDescriptor( PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException;
@@ -68,4 +69,4 @@ public interface MojoScanner
*/
void setActiveExtractors( Set/* */extractors );
-}
\ No newline at end of file
+}
diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java
index b5b56fe..85b72c1 100644
--- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java
+++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java
@@ -60,4 +60,4 @@ public class ScannerTestExtractor
return Collections.singletonList( desc );
}
-}
\ No newline at end of file
+}
diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java
index 58faa83..daeca11 100644
--- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java
+++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java
@@ -50,4 +50,4 @@ public class TestExtractor
return Collections.singletonList( desc );
}
-}
\ No newline at end of file
+}
diff --git a/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java b/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java
index bc22c13..9131002 100644
--- a/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java
@@ -19,11 +19,8 @@ package org.apache.maven.tools.plugin.extractor.beanshell;
* under the License.
*/
-import bsh.EvalError;
-import bsh.Interpreter;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
@@ -37,6 +34,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import bsh.EvalError;
+import bsh.Interpreter;
+
/**
* Extracts Mojo descriptors from BeanShell sources.
*
@@ -83,7 +83,7 @@ public class BeanshellMojoDescriptorExtractor
relativePath = relativePath.replace( '\\', '/' );
- MojoDescriptor mojoDescriptor = createMojoDescriptor( basedir, relativePath, request.getPluginDescriptor() );
+ MojoDescriptor mojoDescriptor = createMojoDescriptor( basedir, relativePath, request );
descriptors.add( mojoDescriptor );
}
}
@@ -98,11 +98,11 @@ public class BeanshellMojoDescriptorExtractor
* @return a new Mojo descriptor instance
* @throws InvalidPluginDescriptorException if any
*/
- private MojoDescriptor createMojoDescriptor( String basedir, String resource, PluginDescriptor pluginDescriptor )
+ private MojoDescriptor createMojoDescriptor( String basedir, String resource, PluginToolsRequest request )
throws InvalidPluginDescriptorException
{
MojoDescriptor mojoDescriptor = new MojoDescriptor();
- mojoDescriptor.setPluginDescriptor( pluginDescriptor );
+ mojoDescriptor.setPluginDescriptor( request.getPluginDescriptor() );
mojoDescriptor.setLanguage( "bsh" );
mojoDescriptor.setComponentConfigurator( "bsh" );
@@ -117,7 +117,7 @@ public class BeanshellMojoDescriptorExtractor
interpreter.set( "mojoDescriptor", mojoDescriptor );
- interpreter.eval( new InputStreamReader( getClass().getResourceAsStream( "/extractor.bsh" ), "UTF-8" ) );
+ interpreter.eval( new InputStreamReader( getClass().getResourceAsStream( "/extractor.bsh" ), request.getEncoding() ) );
}
catch ( EvalError evalError )
{
diff --git a/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh b/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh
index 380c6b2..b90c29f 100644
--- a/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh
+++ b/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh
@@ -1,6 +1,7 @@
import bsh.*;
import java.util.regex.Pattern;
-import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
import org.codehaus.plexus.util.StringUtils;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
@@ -120,9 +121,9 @@ getDescription( text )
}
}
-extract( file, mojoDescriptor )
+extract( file, encoding, mojoDescriptor )
{
- this.parser = new Parser( new FileReader( file ) );
+ this.parser = new Parser( new InputStreamReader( new FileInputStream( file ), encoding ) );
parser.setRetainComments( true );
this.lastNode = null;
@@ -219,4 +220,4 @@ extract( file, mojoDescriptor )
}
}
-extract( file, mojoDescriptor );
+extract( file, encoding, mojoDescriptor );
diff --git a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
index d82770e..0ee6d0e 100644
--- a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
@@ -589,7 +589,7 @@ public class JavaMojoDescriptorExtractor
public List execute( PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException
{
- JavaClass[] javaClasses = discoverClasses( request.getProject() );
+ JavaClass[] javaClasses = discoverClasses( request );
List descriptors = new ArrayList();
@@ -614,11 +614,15 @@ public class JavaMojoDescriptorExtractor
/**
* @param project not null
+ * @param encoding The file encoding of the source files, must not be null.
* @return an array of java class
*/
- protected JavaClass[] discoverClasses( final MavenProject project )
+ protected JavaClass[] discoverClasses( final PluginToolsRequest request )
{
JavaDocBuilder builder = new JavaDocBuilder();
+ builder.setEncoding( request.getEncoding() );
+
+ MavenProject project = request.getProject();
for ( Iterator i = project.getCompileSourceRoots().iterator(); i.hasNext(); )
{
diff --git a/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java b/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java
index 32ae8b8..9b9774a 100644
--- a/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java
+++ b/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java
@@ -25,6 +25,8 @@ import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import java.io.File;
import java.io.UnsupportedEncodingException;
@@ -59,7 +61,11 @@ public class JavaMojoDescriptorExtractorTest
PluginDescriptor pluginDescriptor = new PluginDescriptor();
pluginDescriptor.setGoalPrefix( "test" );
- List results = extractor.execute( project, pluginDescriptor );
+
+ PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
+
+ List results = extractor.execute( request );
+
assertEquals( "Extracted mojos", 2, results.size() );
for ( int i = 0; i < 2; i++ )
@@ -92,7 +98,10 @@ public class JavaMojoDescriptorExtractorTest
PluginDescriptor pluginDescriptor = new PluginDescriptor();
pluginDescriptor.setGoalPrefix( "test" );
- List results = extractor.execute( project, pluginDescriptor );
+
+ PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
+
+ List results = extractor.execute( request );
assertEquals( 1, results.size() );
MojoDescriptor mojoDescriptor = (MojoDescriptor) results.get( 0 );
@@ -156,7 +165,10 @@ public class JavaMojoDescriptorExtractorTest
PluginDescriptor pluginDescriptor = new PluginDescriptor();
pluginDescriptor.setGoalPrefix( "test" );
- List results = extractor.execute( project, pluginDescriptor );
+
+ PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
+
+ List results = extractor.execute( request );
assertEquals( 0, results.size() );
}
diff --git a/pom.xml b/pom.xml
index caa829e..950839d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,7 +144,7 @@
- [2.5-SNAPSHOT,)
+ 2.5-SNAPSHOT
1.2