diff --git a/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java b/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java index 0f7bc06d..a5302b7e 100644 --- a/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java +++ b/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java @@ -180,7 +180,7 @@ public class DefaultArtifactDeployer { Repository repository = new Repository( "local", "file:" + project.getContext().getMavenRepoLocal() ); String repositoryPath = handler.constructRepositoryFullPath( type, project, version ); - deployFile( repository, file, repositoryPath ); + deployFile( repository, file, repositoryPath, project ); } catch ( Exception e ) { @@ -310,7 +310,7 @@ public class DefaultArtifactDeployer AuthenticationInfo authenticationInfo = RepositoryBuilder.getAuthenticationInfo( project, repo ); try { - deployFiles( repository, srcFiles, destFiles, authenticationInfo ); + deployFiles( repository, srcFiles, destFiles, authenticationInfo, project ); success = true; } catch ( Exception e ) @@ -328,15 +328,15 @@ public class DefaultArtifactDeployer } } - private void deployFile( Repository repository, File src, String dest ) + private void deployFile( Repository repository, File src, String dest, Project project ) throws ResourceDoesNotExistException, MalformedURLException, NoSuchAlgorithmException, TransferFailedException, ConnectionException, AuthenticationException, AuthorizationException { - deployFiles( repository, Collections.singletonList( src ), Collections.singletonList( dest ), null ); + deployFiles( repository, Collections.singletonList( src ), Collections.singletonList( dest ), null, project ); } private void deployFiles( Repository repository, List srcFiles, List destFiles, - AuthenticationInfo authenticationInfo ) + AuthenticationInfo authenticationInfo, Project project ) throws ConnectionException, AuthenticationException, ResourceDoesNotExistException, TransferFailedException, AuthorizationException, MalformedURLException, NoSuchAlgorithmException { @@ -347,7 +347,7 @@ public class DefaultArtifactDeployer throw new IllegalArgumentException( msg ); } - Wagon wagon = getWagon( repository.getProtocol() ); + Wagon wagon = getWagon( repository.getProtocol(), project, repository.getId() ); wagon.addTransferListener( new UploadMeter() ); wagon.addTransferListener( new ChecksumObserver() ); wagon.addTransferListener( new ChecksumObserver( "SHA-1" ) ); @@ -377,7 +377,7 @@ public class DefaultArtifactDeployer } } - private Wagon getWagon( String protocol ) + private Wagon getWagon( String protocol, Project project, String id ) throws MalformedURLException { if ( protocol.equals( "http" ) ) @@ -386,7 +386,9 @@ public class DefaultArtifactDeployer } else if ( protocol.equals( "ftp" ) ) { - return new FtpWagon(); + FtpWagon ftpWagon = new FtpWagon(); + RepositoryBuilder.configureFtpWagon( project, id, ftpWagon ); + return ftpWagon; } else if ( protocol.equals( "sftp" ) ) { @@ -402,7 +404,9 @@ public class DefaultArtifactDeployer } else if ( protocol.equals( "scpexe" ) ) { - return new ScpExternalWagon(); + ScpExternalWagon scpExternalWagon = new ScpExternalWagon(); + RepositoryBuilder.configureSshExternalWagon( project, id, scpExternalWagon ); + return scpExternalWagon; } else { diff --git a/artifact/src/main/org/apache/maven/artifact/deployer/RepositoryBuilder.java b/artifact/src/main/org/apache/maven/artifact/deployer/RepositoryBuilder.java index b27012c8..918ca6a8 100755 --- a/artifact/src/main/org/apache/maven/artifact/deployer/RepositoryBuilder.java +++ b/artifact/src/main/org/apache/maven/artifact/deployer/RepositoryBuilder.java @@ -17,15 +17,16 @@ package org.apache.maven.artifact.deployer; * ==================================================================== */ -import org.apache.maven.project.Project; -import org.apache.maven.wagon.repository.Repository; -import org.apache.maven.wagon.repository.RepositoryPermissions; -import org.apache.maven.wagon.authentication.AuthenticationInfo; -import org.apache.maven.wagon.proxy.ProxyInfo; -import org.apache.maven.MavenConstants; -import org.apache.maven.MavenException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.maven.MavenException; +import org.apache.maven.project.Project; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.providers.sshext.ScpExternalWagon; +import org.apache.maven.wagon.providers.ftp.FtpWagon; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.repository.Repository; +import org.apache.maven.wagon.repository.RepositoryPermissions; import java.net.MalformedURLException; @@ -66,7 +67,7 @@ public class RepositoryBuilder } catch ( NumberFormatException e ) { - LOG.warn("Invalid format for port: " + port); + LOG.warn( "Invalid format for port: " + port ); } } @@ -90,54 +91,82 @@ public class RepositoryBuilder permissions.setGroup( remoteGroup ); repository.setPermissions( permissions ); - // TODO: provider specific settings -/* + return repository; + } + + public static void configureFtpWagon( Project project, String id, FtpWagon wagon ) + { +/* TODO: implement in FTP wagon String passiveModeOn = (String) project.getContext().getVariable( "maven.repo." + id + ".passiveModeOn" ); String compress = (String) project.getContext().getVariable( "maven.repo." + id + ".compress" ); - String scpExe = (String) project.getContext().getVariable( "maven.repo." + id + ".scp.executable" ); - if ( scpExe == null ) - { - scpExe = (String) project.getContext().getVariable( "maven.scp.executable" ); - } - String scpArgs = (String) project.getContext().getVariable( "maven.repo." + id + ".scp.args" ); - if ( scpArgs == null ) - { - scpArgs = (String) project.getContext().getVariable( "maven.scp.args" ); - } - String sshExe = (String) project.getContext().getVariable( "maven.repo." + id + ".ssh.executable" ); - if ( sshExe == null ) - { - sshExe = (String) project.getContext().getVariable( "maven.ssh.executable" ); - } - String sshArgs = (String) project.getContext().getVariable( "maven.repo." + id + ".ssh.args" ); - if ( sshArgs == null ) - { - sshArgs = (String) project.getContext().getVariable( "maven.ssh.args" ); - } - if ( passiveModeOn != null ) { if ( "false".equalsIgnoreCase( passiveModeOn ) ) { - repoInfo.setPassiveModeOn( false ); + wagon.setPassiveModeOn( false ); } } if ( compress != null ) { try { - repoInfo.setCompress( new Boolean( compress ).booleanValue() ); + wagon.setCompress( new Boolean( compress ).booleanValue() ); } catch ( Exception e ) { - throw new MalformedURLException( "maven.repo." + id + ".compress should be a boolean" ); + throw new MavenException( "maven.repo." + id + ".compress should be a boolean" ); } } */ + } - return repository; + public static void configureSshExternalWagon( Project project, String id, ScpExternalWagon wagon ) + { + String scpExe = (String) project.getContext().getVariable( "maven.repo." + id + ".scp.executable" ); + if ( scpExe == null ) + { + scpExe = (String) project.getContext().getVariable( "maven.scp.executable" ); + } + + if ( scpExe != null ) + { + wagon.setScpExecutable( scpExe ); + } + + String scpArgs = (String) project.getContext().getVariable( "maven.repo." + id + ".scp.args" ); + if ( scpArgs == null ) + { + scpArgs = (String) project.getContext().getVariable( "maven.scp.args" ); + } + + if ( scpArgs != null ) + { + wagon.setScpArgs( scpArgs ); + } + + String sshExe = (String) project.getContext().getVariable( "maven.repo." + id + ".ssh.executable" ); + if ( sshExe == null ) + { + sshExe = (String) project.getContext().getVariable( "maven.ssh.executable" ); + } + + if ( sshExe != null ) + { + wagon.setSshExecutable( sshExe ); + } + + String sshArgs = (String) project.getContext().getVariable( "maven.repo." + id + ".ssh.args" ); + if ( sshArgs == null ) + { + sshArgs = (String) project.getContext().getVariable( "maven.ssh.args" ); + } + + if ( sshArgs != null ) + { + wagon.setSshArgs( sshArgs ); + } } public static void getProxyInfo( Project project ) @@ -157,15 +186,15 @@ public class RepositoryBuilder } catch ( NumberFormatException e ) { - LOG.warn("Invalid format for port: " + proxyPort); + LOG.warn( "Invalid format for port: " + proxyPort ); } } proxyInfo.setType( "http" ); proxyInfo.setHost( proxyHost ); - proxyInfo.setNonProxyHosts( (String) project.getContext().getVariable( "maven.proxy.nonProxyHosts" )); - proxyInfo.setNtlmDomain( (String) project.getContext().getVariable( "maven.proxy.ntlm.domain" )); - proxyInfo.setNtlmHost( (String) project.getContext().getVariable( "maven.proxy.ntlm.host" )); + proxyInfo.setNonProxyHosts( (String) project.getContext().getVariable( "maven.proxy.nonProxyHosts" ) ); + proxyInfo.setNtlmDomain( (String) project.getContext().getVariable( "maven.proxy.ntlm.domain" ) ); + proxyInfo.setNtlmHost( (String) project.getContext().getVariable( "maven.proxy.ntlm.host" ) ); proxyInfo.setUserName( proxyUser ); proxyInfo.setPassword( proxyPassword ); }