You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2021/05/02 11:34:24 UTC
[maven-site-plugin] 01/01: [MSITE-833] Remove dependency to
maven-compat
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch MSITE-833
in repository https://gitbox.apache.org/repos/asf/maven-site-plugin.git
commit 23c8b8cdf1ea51163c03dd796c8cfd182dd0c28b
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Wed May 27 10:36:33 2020 +0200
[MSITE-833] Remove dependency to maven-compat
---
pom.xml | 2 +-
.../plugins/site/deploy/AbstractDeployMojo.java | 187 ++++++---------------
.../site/deploy/AbstractSiteDeployWebDavTest.java | 7 +-
.../plugins/site/deploy/SiteDeployMojoTest.java | 7 +-
4 files changed, 59 insertions(+), 144 deletions(-)
diff --git a/pom.xml b/pom.xml
index 0cad68f..ae9b111 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,7 +243,7 @@ under the License.
<groupId>org.apache.maven</groupId>
<artifactId>maven-compat</artifactId>
<version>${mavenVersion}</version>
- <scope>provided</scope>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
diff --git a/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java b/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java
index 2355534..1bf58bf 100644
--- a/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java
@@ -19,7 +19,6 @@ package org.apache.maven.plugins.site.deploy;
* under the License.
*/
-import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.doxia.site.decoration.inheritance.URIPathDescriptor;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenSession;
@@ -42,7 +41,6 @@ import org.apache.maven.wagon.CommandExecutor;
import org.apache.maven.wagon.ConnectionException;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.UnsupportedProtocolException;
import org.apache.maven.wagon.Wagon;
import org.apache.maven.wagon.authentication.AuthenticationException;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
@@ -50,7 +48,6 @@ import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.observers.Debug;
import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.repository.Repository;
-import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.component.configurator.ComponentConfigurator;
@@ -58,9 +55,6 @@ import org.codehaus.plexus.component.repository.exception.ComponentLifecycleExce
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -69,7 +63,8 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Locale;
-import java.util.Set;
+
+import static java.util.Locale.ENGLISH;
/**
* Abstract base class for deploy mojos.
@@ -80,7 +75,6 @@ import java.util.Set;
*/
public abstract class AbstractDeployMojo
extends AbstractSiteMojo
- implements Contextualizable
{
/**
* Directory containing the generated project sites and report distributions.
@@ -126,11 +120,6 @@ public abstract class AbstractDeployMojo
private boolean skipDeploy;
/**
- */
- @Component
- private WagonManager wagonManager; // maven-compat
-
- /**
* The current user system settings for use in Maven.
*/
@Parameter( defaultValue = "${settings}", readonly = true )
@@ -146,8 +135,13 @@ public abstract class AbstractDeployMojo
private Site deploySite;
+ @Component
private PlexusContainer container;
+ @Component
+ SettingsDecrypter settingsDecrypter;
+
+
/**
* {@inheritDoc}
*/
@@ -298,14 +292,12 @@ public abstract class AbstractDeployMojo
throws MojoExecutionException
{
// TODO: work on moving this into the deployer like the other deploy methods
- final Wagon wagon = getWagon( repository, wagonManager );
+ final Wagon wagon = getWagon( repository );
try
{
configureWagon( wagon, repository.getId(), settings, container, getLog() );
- SettingsDecrypter settingsDecrypter = container.lookup( SettingsDecrypter.class );
-
ProxyInfo proxyInfo = getProxy( repository, settingsDecrypter );
push( directory, repository, wagon, proxyInfo, getLocales(), getDeployModuleDirectory() );
@@ -315,10 +307,6 @@ public abstract class AbstractDeployMojo
chmod( wagon, repository, chmodOptions, chmodMode );
}
}
- catch ( ComponentLookupException cle )
- {
- throw new MojoExecutionException( "Unable to lookup SettingsDecrypter: " + cle.getMessage(), cle );
- }
catch ( TransferFailedException e )
{
throw new MojoExecutionException( "Unable to configure Wagon: '" + repository.getProtocol() + "'", e );
@@ -336,63 +324,68 @@ public abstract class AbstractDeployMojo
}
}
- private Wagon getWagon( final Repository repository, final WagonManager manager )
+ private Wagon getWagon( final Repository repository )
throws MojoExecutionException
{
- final Wagon wagon;
-
- try
- {
- wagon = manager.getWagon( repository );
- }
- catch ( UnsupportedProtocolException e )
+ String protocol = repository.getProtocol();
+ if ( protocol == null )
{
- String shortMessage = "Unsupported protocol: '" + repository.getProtocol() + "' for site deployment to "
- + "distributionManagement.site.url=" + repository.getUrl() + ".";
- String longMessage =
- "\n" + shortMessage + "\n" + "Currently supported protocols are: " + getSupportedProtocols() + ".\n"
- + " Protocols may be added through wagon providers.\n" + " For more information, see "
- + "https://maven.apache.org/plugins/maven-site-plugin/examples/adding-deploy-protocol.html";
-
- getLog().error( longMessage );
-
- throw new MojoExecutionException( shortMessage );
+ throw new MojoExecutionException( "Unspecified protocol" );
}
- catch ( TransferFailedException e )
+ try
{
- throw new MojoExecutionException( "Unable to configure Wagon: '" + repository.getProtocol() + "'", e );
- }
-
- if ( !wagon.supportsDirectoryCopy() )
+ Wagon wagon = container.lookup( Wagon.class, protocol.toLowerCase( ENGLISH ) );
+ if ( !wagon.supportsDirectoryCopy() )
+ {
+ throw new MojoExecutionException(
+ "Wagon protocol '" + repository.getProtocol() + "' doesn't support directory copying" );
+ }
+ return wagon;
+ }
+ catch ( ComponentLookupException e )
{
- throw new MojoExecutionException(
- "Wagon protocol '" + repository.getProtocol() + "' doesn't support directory copying" );
+ throw new MojoExecutionException( "Cannot find wagon which supports the requested protocol: "
+ + protocol, e );
}
-
- return wagon;
}
- private String getSupportedProtocols()
+ public AuthenticationInfo getAuthenticationInfo( String id )
{
- try
+ if ( id != null )
{
- Set<String> protocols = container.lookupMap( Wagon.class ).keySet();
+ List<Server> servers = settings.getServers();
- return StringUtils.join( protocols.iterator(), ", " );
- }
- catch ( ComponentLookupException e )
- {
- // in the unexpected case there is a problem when instantiating a wagon provider
- getLog().error( e );
+ if ( servers != null )
+ {
+ for ( Server server : servers )
+ {
+ if ( id.equalsIgnoreCase( server.getId() ) )
+ {
+ SettingsDecryptionResult result =
+ settingsDecrypter.decrypt( new DefaultSettingsDecryptionRequest( server ) );
+ server = result.getServer();
+
+ AuthenticationInfo authInfo = new AuthenticationInfo();
+ authInfo.setUserName( server.getUsername() );
+ authInfo.setPassword( server.getPassword() );
+ authInfo.setPrivateKey( server.getPrivateKey() );
+ authInfo.setPassphrase( server.getPassphrase() );
+
+ return authInfo;
+ }
+ }
+ }
}
- return "";
+
+ // empty one to prevent NPE
+ return new AuthenticationInfo();
}
private void push( final File inputDirectory, final Repository repository, final Wagon wagon,
final ProxyInfo proxyInfo, final List<Locale> localesList, final String relativeDir )
throws MojoExecutionException
{
- AuthenticationInfo authenticationInfo = wagonManager.getAuthenticationInfo( repository.getId() );
+ AuthenticationInfo authenticationInfo = getAuthenticationInfo( repository.getId() );
getLog().debug( "authenticationInfo with id '" + repository.getId() + "': "
+ ( ( authenticationInfo == null ) ? "-" : authenticationInfo.getUserName() ) );
@@ -412,7 +405,7 @@ public abstract class AbstractDeployMojo
getLog().debug( "connect with proxyInfo" );
wagon.connect( repository, authenticationInfo, proxyInfo );
}
- else if ( proxyInfo == null && authenticationInfo != null )
+ else if ( authenticationInfo != null )
{
getLog().debug( "connect with authenticationInfo and without proxyInfo" );
wagon.connect( repository, authenticationInfo );
@@ -476,71 +469,6 @@ public abstract class AbstractDeployMojo
/**
* Get proxy information.
- * <p>
- * Get the <code>ProxyInfo</code> of the proxy associated with the <code>host</code>
- * and the <code>protocol</code> of the given <code>repository</code>.
- * </p>
- * <p>
- * Extract from <a href="https://docs.oracle.com/javase/1.5.0/docs/guide/net/properties.html">
- * J2SE Doc : Networking Properties - nonProxyHosts</a> : "The value can be a list of hosts,
- * each separated by a |, and in addition a wildcard character (*) can be used for matching"
- * </p>
- * <p>
- * Defensively support comma (",") and semi colon (";") in addition to pipe ("|") as separator.
- * </p>
- *
- * @param repository the Repository to extract the ProxyInfo from
- * @param wagonManager the WagonManager used to connect to the Repository
- * @return a ProxyInfo object instantiated or <code>null</code> if no matching proxy is found
- */
- public static ProxyInfo getProxyInfo( Repository repository, WagonManager wagonManager )
- {
- ProxyInfo proxyInfo = wagonManager.getProxy( repository.getProtocol() );
-
- if ( proxyInfo == null )
- {
- return null;
- }
-
- String host = repository.getHost();
- String nonProxyHostsAsString = proxyInfo.getNonProxyHosts();
- for ( String nonProxyHost : StringUtils.split( nonProxyHostsAsString, ",;|" ) )
- {
- if ( StringUtils.contains( nonProxyHost, "*" ) )
- {
- // Handle wildcard at the end, beginning or middle of the nonProxyHost
- final int pos = nonProxyHost.indexOf( '*' );
- String nonProxyHostPrefix = nonProxyHost.substring( 0, pos );
- String nonProxyHostSuffix = nonProxyHost.substring( pos + 1 );
- // prefix*
- if ( StringUtils.isNotEmpty( nonProxyHostPrefix ) && host.startsWith( nonProxyHostPrefix )
- && StringUtils.isEmpty( nonProxyHostSuffix ) )
- {
- return null;
- }
- // *suffix
- if ( StringUtils.isEmpty( nonProxyHostPrefix ) && StringUtils.isNotEmpty( nonProxyHostSuffix )
- && host.endsWith( nonProxyHostSuffix ) )
- {
- return null;
- }
- // prefix*suffix
- if ( StringUtils.isNotEmpty( nonProxyHostPrefix ) && host.startsWith( nonProxyHostPrefix )
- && StringUtils.isNotEmpty( nonProxyHostSuffix ) && host.endsWith( nonProxyHostSuffix ) )
- {
- return null;
- }
- }
- else if ( host.equals( nonProxyHost ) )
- {
- return null;
- }
- }
- return proxyInfo;
- }
-
- /**
- * Get proxy information.
*
* @param repository the Repository to extract the ProxyInfo from
* @param settingsDecrypter settings password decrypter
@@ -626,7 +554,7 @@ public abstract class AbstractDeployMojo
/**
* Configure the Wagon with the information from serverConfigurationMap ( which comes from settings.xml )
*
- * @todo Remove when {@link WagonManager#getWagon(Repository) is available}. It's available in Maven 2.0.5.
+ * @todo Remove when {@link WagonManager#getWagon(String) is available}. It's available in Maven 2.0.5.
*/
private static void configureWagon( Wagon wagon, String repositoryId, Settings settings, PlexusContainer container,
Log log )
@@ -683,15 +611,6 @@ public abstract class AbstractDeployMojo
}
/**
- * {@inheritDoc}
- */
- public void contextualize( Context context )
- throws ContextException
- {
- container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
- }
-
- /**
* Extract the distributionManagement site from the given MavenProject.
*
* @param project the MavenProject. Not null.
diff --git a/src/test/java/org/apache/maven/plugins/site/deploy/AbstractSiteDeployWebDavTest.java b/src/test/java/org/apache/maven/plugins/site/deploy/AbstractSiteDeployWebDavTest.java
index 1af75b1..61333b6 100644
--- a/src/test/java/org/apache/maven/plugins/site/deploy/AbstractSiteDeployWebDavTest.java
+++ b/src/test/java/org/apache/maven/plugins/site/deploy/AbstractSiteDeployWebDavTest.java
@@ -27,7 +27,7 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
-import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.MavenArtifactRepository;
import org.apache.maven.doxia.tools.SiteTool;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionRequest;
@@ -226,13 +226,10 @@ public abstract class AbstractSiteDeployWebDavTest
}
else
{
- ArtifactRepositoryFactory artifactRepositoryFactory = getContainer().lookup( ArtifactRepositoryFactory.class );
-
setVariableValueToObject( mojo, "stagingDirectory", inputDirectory );
setVariableValueToObject( mojo, "reactorProjects", Collections.emptyList() );
setVariableValueToObject( mojo, "localRepository",
- artifactRepositoryFactory.createArtifactRepository( "local", "foo", "default",
- null, null ) );
+ new MavenArtifactRepository("local", "foo", null, null, null) );
setVariableValueToObject( mojo, "siteTool", getContainer().lookup( SiteTool.class ) );
setVariableValueToObject( mojo, "siteDirectory", new File("foo") );
setVariableValueToObject( mojo, "repositories", Collections.emptyList() );
diff --git a/src/test/java/org/apache/maven/plugins/site/deploy/SiteDeployMojoTest.java b/src/test/java/org/apache/maven/plugins/site/deploy/SiteDeployMojoTest.java
index 59f41b4..623ec3b 100644
--- a/src/test/java/org/apache/maven/plugins/site/deploy/SiteDeployMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/site/deploy/SiteDeployMojoTest.java
@@ -19,8 +19,7 @@ package org.apache.maven.plugins.site.deploy;
* under the License.
*/
-import org.apache.maven.artifact.manager.WagonManager;
-//import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.Wagon;
import org.codehaus.plexus.PlexusTestCase;
import org.junit.Before;
import org.junit.Test;
@@ -34,7 +33,7 @@ import org.junit.runners.JUnit4;
public class SiteDeployMojoTest
extends PlexusTestCase
{
- private WagonManager wagonManager;
+ private Wagon wagon;
//private Repository repository;
@@ -43,7 +42,7 @@ public class SiteDeployMojoTest
throws Exception
{
super.setUp();
- wagonManager = getContainer().lookup( WagonManager.class );
+ // wagon = getContainer().lookup( Wagon.class, "scp" );
//repository = new Repository( "my-repository", "scp://repository-host/var/maven2" );
}