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/01/28 22:14:48 UTC
[maven-help-plugin] branch mvn4 created (now c42d7c1)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a change to branch mvn4
in repository https://gitbox.apache.org/repos/asf/maven-help-plugin.git.
at c42d7c1 mvn4 aggregator
This branch includes the following new commits:
new c42d7c1 mvn4 aggregator
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[maven-help-plugin] 01/01: mvn4 aggregator
Posted by gn...@apache.org.
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-help-plugin.git
commit c42d7c1fe79bf3ea84d6195507891ab0e9fae44d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Jan 28 23:14:46 2022 +0100
mvn4 aggregator
---
pom.xml | 93 +++++++++-------------
.../maven/plugins/help/EffectivePomMojo.java | 85 +-------------------
.../maven/plugins/help/AllProfilesMojoTest.java | 43 ++++------
.../maven/plugins/help/EvaluateMojoTest.java | 87 ++++++++------------
4 files changed, 91 insertions(+), 217 deletions(-)
diff --git a/pom.xml b/pom.xml
index b1ea5e2..62bd9d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,9 +68,9 @@
</distributionManagement>
<properties>
- <javaVersion>7</javaVersion>
- <mavenVersion>3.1.1</mavenVersion>
- <mavenPluginToolsVersion>3.6.2</mavenPluginToolsVersion>
+ <javaVersion>8</javaVersion>
+ <mavenVersion>4.0.0-alpha-1-SNAPSHOT</mavenVersion>
+ <mavenPluginToolsVersion>3.6.5-SNAPSHOT</mavenPluginToolsVersion>
<surefire.version>2.22.2</surefire.version>
<project.build.outputTimestamp>2020-04-07T21:04:00Z</project.build.outputTimestamp>
</properties>
@@ -81,26 +81,43 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>${mavenVersion}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>${mavenVersion}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
- <version>3.8.4</version>
+ <version>${mavenVersion}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>${mavenVersion}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-settings</artifactId>
<version>${mavenVersion}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings-builder</artifactId>
+ <version>${mavenVersion}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-builder-support</artifactId>
+ <version>${mavenVersion}</version>
+ <scope>provided</scope>
</dependency>
<!-- maven plugin tools -->
@@ -130,17 +147,17 @@
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
- <version>3.3.4</version>
+ <version>4.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-api</artifactId>
- <version>3.0</version>
+ <version>3.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-exec</artifactId>
- <version>1.5.1</version>
+ <version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
@@ -191,7 +208,7 @@
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
<artifactId>maven-plugin-testing-harness</artifactId>
- <version>3.1.0</version>
+ <version>3.4.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -213,6 +230,7 @@
<plugins>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
+ <version>3.6.4</version>
<configuration>
<helpPackageName>org.apache.maven.plugins.help</helpPackageName>
</configuration>
@@ -227,7 +245,7 @@
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
- <version>3.0.0-M3</version>
+ <version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -264,51 +282,18 @@
</configuration>
</execution>
</executions>
- </plugin>
- <!-- unpack old Maven core sources for maven.mdo model to be able to generate xpp3-extended-writer when not yet provided by Maven core -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <phase>generate-sources</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>org.apache.maven</groupId>
- <artifactId>apache-maven</artifactId>
- <version>${mavenVersion}</version>
- <type>tar.gz</type>
- <classifier>src</classifier>
- <outputDirectory>${project.build.directory}</outputDirectory>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.modello</groupId>
- <artifactId>modello-maven-plugin</artifactId>
- <version>1.11</version>
- <configuration>
- <version>4.0.0</version>
- <models>
- <model>target/apache-maven-${mavenVersion}/maven-model/src/main/mdo/maven.mdo</model>
- </models>
- <extendedClassnameSuffix>ExOldSupport</extendedClassnameSuffix><!-- to avoid conflict with class provided by Maven core -->
- </configuration>
- <executions>
- <execution>
- <id>modello</id>
- <goals>
- <goal>xpp3-extended-writer</goal>
- </goals>
- </execution>
- </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>extra-enforcer-rules</artifactId>
+ <version>1.5.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-dependency-tree</artifactId>
+ <version>3.1.0</version>
+ </dependency>
+ </dependencies>
</plugin>
</plugins>
</build>
diff --git a/src/main/java/org/apache/maven/plugins/help/EffectivePomMojo.java b/src/main/java/org/apache/maven/plugins/help/EffectivePomMojo.java
index d80e7cd..557eda4 100644
--- a/src/main/java/org/apache/maven/plugins/help/EffectivePomMojo.java
+++ b/src/main/java/org/apache/maven/plugins/help/EffectivePomMojo.java
@@ -21,9 +21,6 @@ package org.apache.maven.plugins.help;
import java.io.IOException;
import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
@@ -32,7 +29,7 @@ import org.apache.maven.model.InputLocation;
import org.apache.maven.model.Model;
import org.apache.maven.model.InputSource;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-import org.apache.maven.model.io.xpp3.MavenXpp3WriterExOldSupport;
+import org.apache.maven.model.io.xpp3.MavenXpp3WriterEx;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.MojoExecution.Source;
import org.apache.maven.plugin.MojoExecutionException;
@@ -44,8 +41,6 @@ import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
import org.codehaus.plexus.util.xml.XMLWriter;
import org.codehaus.plexus.util.xml.XmlWriterUtil;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.pull.XmlSerializer;
/**
* Displays the effective POM as an XML for this build, with the active profiles factored in, or a specified artifact.
@@ -212,12 +207,9 @@ public class EffectivePomMojo
{
if ( verbose )
{
- // try to use Maven core-provided xpp3 extended writer (available since Maven 3.6.1)
- if ( ! writeMavenXpp3WriterEx( sWriter, pom ) )
- {
- // xpp3 extended writer not provided by Maven core, use local code
- new EffectiveWriterExOldSupport().write( sWriter, pom );
- }
+ MavenXpp3WriterEx mavenXpp3WriterEx = new MavenXpp3WriterEx();
+ mavenXpp3WriterEx.setStringFormatter( new InputLocationStringFormatter() );
+ mavenXpp3WriterEx.write( sWriter, pom );
}
else
{
@@ -249,53 +241,6 @@ public class EffectivePomMojo
pom.setProperties( properties );
}
- private void warnWriteMavenXpp3WriterEx( Throwable t )
- {
- getLog().warn( "Unexpected exception while running Maven Model Extended Writer, "
- + "falling back to old internal implementation.", t );
- }
-
- private boolean writeMavenXpp3WriterEx( Writer writer, Model model )
- throws IOException
- {
- try
- {
- Class<?> mavenXpp3WriterExClass = Class.forName( "org.apache.maven.model.io.xpp3.MavenXpp3WriterEx" );
- Object mavenXpp3WriterEx = mavenXpp3WriterExClass.getDeclaredConstructor().newInstance();
-
- Method setStringFormatter =
- mavenXpp3WriterExClass.getMethod( "setStringFormatter", InputLocation.StringFormatter.class );
- setStringFormatter.invoke( mavenXpp3WriterEx, new InputLocationStringFormatter() );
-
- Method write = mavenXpp3WriterExClass.getMethod( "write", Writer.class, Model.class );
- write.invoke( mavenXpp3WriterEx, writer, model );
-
- return true;
- }
- catch ( ClassNotFoundException e )
- {
- // MavenXpp3WriterEx not available in running Maven version
- }
- catch ( NoSuchMethodException | SecurityException | IllegalArgumentException | IllegalAccessException
- | InstantiationException e )
- {
- warnWriteMavenXpp3WriterEx( e );
- }
- catch ( InvocationTargetException e )
- {
- if ( e.getTargetException() instanceof IOException )
- {
- throw (IOException) e.getTargetException();
- }
- else if ( e.getTargetException() instanceof RuntimeException )
- {
- throw (RuntimeException) e.getTargetException();
- }
- warnWriteMavenXpp3WriterEx( e );
- }
- return false;
- }
-
private static String toString( InputLocation location )
{
InputSource source = location.getSource();
@@ -322,26 +267,4 @@ public class EffectivePomMojo
}
- /**
- * Xpp3 extended writer extension to improve default InputSource display
- */
- private static class EffectiveWriterExOldSupport
- extends MavenXpp3WriterExOldSupport
- {
-
- @Override
- public String toString( InputLocation location )
- {
- return EffectivePomMojo.toString( location );
- }
-
- @Override
- protected void writeXpp3DomToSerializer( Xpp3Dom dom, XmlSerializer serializer )
- throws java.io.IOException
- {
- // default method uses Xpp3Dom input location tracking, not available in older Maven versions
- // use old Xpp3Dom serialization, without input location tracking
- dom.writeToSerializer( null, serializer );
- }
- }
}
diff --git a/src/test/java/org/apache/maven/plugins/help/AllProfilesMojoTest.java b/src/test/java/org/apache/maven/plugins/help/AllProfilesMojoTest.java
index b7f9596..5e03e7c 100644
--- a/src/test/java/org/apache/maven/plugins/help/AllProfilesMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/help/AllProfilesMojoTest.java
@@ -22,19 +22,17 @@ package org.apache.maven.plugins.help;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.maven.model.Profile;
-import org.apache.maven.monitor.logging.DefaultLog;
-import org.apache.maven.plugin.Mojo;
+import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.LoggerManager;
import org.codehaus.plexus.util.IOUtil;
/**
@@ -44,15 +42,26 @@ public class AllProfilesMojoTest
extends AbstractMojoTestCase
{
- private InterceptingLog interceptingLogger;
+ private List<String> warnLogs = new ArrayList<>();
+ private Log interceptingLogger;
@Override
protected void setUp()
throws Exception
{
super.setUp();
- interceptingLogger =
- new InterceptingLog( getContainer().lookup( LoggerManager.class ).getLoggerForComponent( Mojo.ROLE ) );
+ interceptingLogger = (Log) Proxy.newProxyInstance(
+ getClass().getClassLoader(),
+ new Class[] { Log.class },
+ ( proxy, method, args ) ->
+ {
+ if ( method.getName().equals( "warn" ) )
+ {
+ warnLogs.add( args[0].toString() );
+ }
+ return null;
+ }
+ );
}
/**
@@ -72,7 +81,7 @@ public class AllProfilesMojoTest
mojo.execute();
- assertTrue( interceptingLogger.warnLogs.contains( "No profiles detected!" ) );
+ assertTrue( warnLogs.contains( "No profiles detected!" ) );
}
/**
@@ -193,22 +202,4 @@ public class AllProfilesMojoTest
}
}
- private static final class InterceptingLog
- extends DefaultLog
- {
- final List<String> warnLogs = new ArrayList<>();
-
- public InterceptingLog( Logger logger )
- {
- super( logger );
- }
-
- @Override
- public void warn( CharSequence content )
- {
- super.warn( content );
- warnLogs.add( content.toString() );
- }
- }
-
}
diff --git a/src/test/java/org/apache/maven/plugins/help/EvaluateMojoTest.java b/src/test/java/org/apache/maven/plugins/help/EvaluateMojoTest.java
index e2e1926..2ebefc9 100644
--- a/src/test/java/org/apache/maven/plugins/help/EvaluateMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/help/EvaluateMojoTest.java
@@ -28,19 +28,17 @@ import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintStream;
+import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
-import org.apache.maven.monitor.logging.DefaultLog;
-import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
+import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.components.interactivity.InputHandler;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.LoggerManager;
/**
* Test class for the evaluate mojo of the Help Plugin.
@@ -49,15 +47,35 @@ public class EvaluateMojoTest
extends AbstractMojoTestCase
{
- private InterceptingLog interceptingLogger;
+ private boolean isInfoEnabled;
+
+ private List<String> infoLogs = new ArrayList<>();
+
+ private List<String> warnLogs = new ArrayList<>();
+
+ private Log interceptingLogger;
@Override
protected void setUp()
throws Exception
{
super.setUp();
- interceptingLogger =
- new InterceptingLog( getContainer().lookup( LoggerManager.class ).getLoggerForComponent( Mojo.ROLE ) );
+ interceptingLogger = (Log) Proxy.newProxyInstance(
+ getClass().getClassLoader(),
+ new Class[] { Log.class },
+ ( proxy, method, args ) ->
+ {
+ if ( method.getName().equals( "info" ) )
+ {
+ infoLogs.add( args[0].toString() );
+ }
+ else if ( method.getName().equals( "warn" ) )
+ {
+ warnLogs.add( args[0].toString() );
+ }
+ return null;
+ }
+ );
}
/**
@@ -83,8 +101,8 @@ public class EvaluateMojoTest
String ls = System.getProperty( "line.separator" );
- assertTrue( interceptingLogger.infoLogs.contains( ls + "My result" ) );
- assertTrue( interceptingLogger.warnLogs.isEmpty() );
+ assertTrue( infoLogs.contains( ls + "My result" ) );
+ assertTrue( warnLogs.isEmpty() );
verify( expressionEvaluator ).evaluate( "${project.groupId}" );
verify( inputHandler, times( 2 ) ).readLine();
}
@@ -112,8 +130,8 @@ public class EvaluateMojoTest
String ls = System.getProperty( "line.separator" );
- assertTrue( interceptingLogger.infoLogs.contains( ls + "My result" ) );
- assertFalse( interceptingLogger.warnLogs.isEmpty() );
+ assertTrue( infoLogs.contains( ls + "My result" ) );
+ assertFalse( warnLogs.isEmpty() );
verify( expressionEvaluator ).evaluate( "${project.artifactId}" );
verify( inputHandler, times( 2 ) ).readLine();
}
@@ -136,7 +154,7 @@ public class EvaluateMojoTest
when( expressionEvaluator.evaluate( anyString() ) ).thenReturn( "org.apache.maven.its.help" );
// Quiet mode given on command line.(simulation)
- interceptingLogger.setInfoEnabled( false );
+ isInfoEnabled = false;
setUpMojo( mojo, null, expressionEvaluator );
@@ -156,7 +174,7 @@ public class EvaluateMojoTest
String stdResult = baos.toString();
assertEquals( "org.apache.maven.its.help", stdResult );
- assertTrue( interceptingLogger.warnLogs.isEmpty() );
+ assertTrue( warnLogs.isEmpty() );
}
private void setUpMojo( EvaluateMojo mojo, InputHandler inputHandler, ExpressionEvaluator expressionEvaluator )
@@ -169,47 +187,4 @@ public class EvaluateMojoTest
setVariableValueToObject( mojo, "evaluator", expressionEvaluator );
}
- private static final class InterceptingLog
- extends DefaultLog
- {
- private boolean isInfoEnabled;
-
- final List<String> infoLogs = new ArrayList<>();
-
- final List<String> warnLogs = new ArrayList<>();
-
- public InterceptingLog( Logger logger )
- {
- super( logger );
- this.isInfoEnabled = true;
- }
-
- public void setInfoEnabled( boolean isInfoEnabled )
- {
- this.isInfoEnabled = isInfoEnabled;
- }
-
- public boolean isInfoEnabled()
- {
- return isInfoEnabled;
- }
-
- @Override
- public void info( CharSequence content )
- {
- if ( this.isInfoEnabled )
- {
- super.info( content );
- infoLogs.add( content.toString() );
- }
- }
-
- @Override
- public void warn( CharSequence content )
- {
- super.warn( content );
- warnLogs.add( content.toString() );
- }
- }
-
}