You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/03/08 10:49:01 UTC
[maven-plugin-tools] branch mvn4 updated: runtime support
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch mvn4
in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git
The following commit(s) were added to refs/heads/mvn4 by this push:
new f664f52 runtime support
f664f52 is described below
commit f664f5209fc52d5194d698a8d3e1a5b77c1b05ca
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 8 11:48:58 2022 +0100
runtime support
---
.../JavaAnnotationsMojoDescriptorExtractor.java | 38 +++++++++++++++++++---
.../annotations/scanner/MojoAnnotatedClass.java | 13 ++++++++
.../scanner/MojoAnnotationsScanner.java | 8 +++--
.../scanner/visitors/MojoClassVisitor.java | 4 +++
.../maven/tools/plugin/ExtendedMojoDescriptor.java | 14 ++++++++
.../generator/PluginDescriptorGenerator.java | 7 ++++
6 files changed, 78 insertions(+), 6 deletions(-)
diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
index ca68e32..b2e544a 100644
--- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
@@ -362,8 +362,22 @@ public class JavaAnnotationsMojoDescriptorExtractor
}
catch ( NoClassDefFoundError e )
{
- getLogger().warn( "Failed extracting tag '" + tagName + "' from class " + javaClass );
- throw e;
+ if ( e.getMessage().replace( '/', '.' )
+ .contains( MojoAnnotationsScanner.V4_API_PLUGIN_PACKAGE ) )
+ {
+ return null;
+ }
+ String str;
+ try
+ {
+ str = javaClass.getFullyQualifiedName();
+ }
+ catch ( Throwable t )
+ {
+ str = javaClass.getValue();
+ }
+ getLogger().warn( "Failed extracting tag '" + tagName + "' from class " + str );
+ throw (NoClassDefFoundError) new NoClassDefFoundError( e.getMessage() ).initCause( e );
}
}
@@ -412,8 +426,22 @@ public class JavaAnnotationsMojoDescriptorExtractor
}
catch ( NoClassDefFoundError e )
{
- getLogger().warn( "Failed extracting parameters from " + javaClass );
- throw e;
+ if ( e.getMessage().replace( '/', '.' )
+ .contains( MojoAnnotationsScanner.V4_API_PLUGIN_PACKAGE ) )
+ {
+ return new TreeMap<>();
+ }
+ String str;
+ try
+ {
+ str = javaClass.getFullyQualifiedName();
+ }
+ catch ( Throwable t )
+ {
+ str = javaClass.getValue();
+ }
+ getLogger().warn( "Failed extracting parameters from " + str );
+ throw (NoClassDefFoundError) new NoClassDefFoundError( e.getMessage() ).initCause( e );
}
}
@@ -505,6 +533,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
mojoDescriptor.setImplementation( mojoAnnotatedClass.getClassName() );
mojoDescriptor.setLanguage( "java" );
+ mojoDescriptor.setV4Api( mojoAnnotatedClass.isV4Api() );
+
MojoAnnotationContent mojo = mojoAnnotatedClass.getMojo();
mojoDescriptor.setDescription( mojo.getDescription() );
diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotatedClass.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotatedClass.java
index ab5f5b1..9c5e6ee 100644
--- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotatedClass.java
+++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotatedClass.java
@@ -57,6 +57,8 @@ public class MojoAnnotatedClass
*/
private Artifact artifact;
+ private boolean v4Api;
+
public MojoAnnotatedClass()
{
// no op
@@ -151,6 +153,16 @@ public class MojoAnnotatedClass
return !( getComponents().isEmpty() && getParameters().isEmpty() && execute == null && mojo == null );
}
+ public boolean isV4Api()
+ {
+ return v4Api;
+ }
+
+ public void setV4Api( boolean v4Api )
+ {
+ this.v4Api = v4Api;
+ }
+
@Override
public String toString()
{
@@ -162,6 +174,7 @@ public class MojoAnnotatedClass
sb.append( ", execute=" ).append( execute );
sb.append( ", parameters=" ).append( parameters );
sb.append( ", components=" ).append( components );
+ sb.append( ", v4api=" ).append( v4Api );
sb.append( '}' );
return sb.toString();
}
diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotationsScanner.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotationsScanner.java
index b112ed1..58e4cfc 100644
--- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotationsScanner.java
+++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/MojoAnnotationsScanner.java
@@ -37,11 +37,15 @@ public interface MojoAnnotationsScanner
{
String ROLE = MojoAnnotationsScanner.class.getName();
+ String V4_API_PLUGIN_PACKAGE = "org.apache.maven.api.plugin";
+
+ String V4_API_ANNOTATIONS_PACKAGE = V4_API_PLUGIN_PACKAGE + ".annotations";
+
List<String> CLASS_LEVEL_ANNOTATIONS = Arrays.asList( Mojo.class.getName(), Execute.class.getName(),
- "org.apache.maven.api.plugin.annotations.Mojo", "org.apache.maven.api.plugin.annotations.Execute" );
+ V4_API_ANNOTATIONS_PACKAGE + ".Mojo", V4_API_ANNOTATIONS_PACKAGE + ".Execute" );
List<String> FIELD_LEVEL_ANNOTATIONS = Arrays.asList( Parameter.class.getName(), Component.class.getName(),
- "org.apache.maven.api.plugin.annotations.Parameter", "org.apache.maven.api.plugin.annotations.Component" );
+ V4_API_ANNOTATIONS_PACKAGE + ".Parameter", V4_API_ANNOTATIONS_PACKAGE + ".Component" );
/**
* Scan classes for mojo annotations.
diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/visitors/MojoClassVisitor.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/visitors/MojoClassVisitor.java
index 1bf35c7..5a5e616 100644
--- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/visitors/MojoClassVisitor.java
+++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/visitors/MojoClassVisitor.java
@@ -139,6 +139,10 @@ public class MojoClassVisitor
{
return null;
}
+ if ( annotationClassName.startsWith( MojoAnnotationsScanner.V4_API_ANNOTATIONS_PACKAGE ) )
+ {
+ mojoAnnotatedClass.setV4Api( true );
+ }
MojoAnnotationVisitor mojoAnnotationVisitor = new MojoAnnotationVisitor( logger, annotationClassName );
annotationVisitorMap.put( annotationClassName, mojoAnnotationVisitor );
return mojoAnnotationVisitor;
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/ExtendedMojoDescriptor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/ExtendedMojoDescriptor.java
index 3f82db1..69aff30 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/ExtendedMojoDescriptor.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/ExtendedMojoDescriptor.java
@@ -32,6 +32,8 @@ public class ExtendedMojoDescriptor
private String requiresDependencyCollection = null;
+ private boolean v4Api = false;
+
@Override
public boolean isThreadSafe()
{
@@ -55,4 +57,16 @@ public class ExtendedMojoDescriptor
{
this.requiresDependencyCollection = requiresDependencyCollection;
}
+
+ @Override
+ public boolean isV4Api()
+ {
+ return v4Api;
+ }
+
+ @Override
+ public void setV4Api( boolean v4Api )
+ {
+ this.v4Api = v4Api;
+ }
}
diff --git a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
index 901412b..8afd940 100644
--- a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
+++ b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
@@ -389,6 +389,13 @@ public class PluginDescriptorGenerator
}
GeneratorUtils.element( w, "threadSafe", String.valueOf( extendedMojoDescriptor.isThreadSafe() ) );
+
+ boolean v4Api = extendedMojoDescriptor.isV4Api();
+ if ( v4Api )
+ {
+ GeneratorUtils.element( w, "v4Api", String.valueOf( v4Api ) );
+ }
+
}
// ----------------------------------------------------------------------