ftp improvements
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@116102 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6859e07a9d
commit
360948ac36
@ -27,7 +27,7 @@ import org.apache.maven.project.Project;
|
|||||||
* Perform mapping between project's properties and attributes of DeployRequest class.
|
* Perform mapping between project's properties and attributes of DeployRequest class.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:michal.maczka@dimatics.com">Michal Maczka</a>
|
* @author <a href="mailto:michal.maczka@dimatics.com">Michal Maczka</a>
|
||||||
* @version $Id: RepositoryInfoBuilder.java,v 1.8 2004/09/28 09:20:40 brett Exp $
|
* @version $Id: RepositoryInfoBuilder.java,v 1.9 2004/09/29 10:56:03 brett Exp $
|
||||||
*/
|
*/
|
||||||
public class RepositoryInfoBuilder
|
public class RepositoryInfoBuilder
|
||||||
{
|
{
|
||||||
@ -87,6 +87,10 @@ public class RepositoryInfoBuilder
|
|||||||
(String) project.getContext().getVariable(
|
(String) project.getContext().getVariable(
|
||||||
"maven.repo." + repository + ".mode");
|
"maven.repo." + repository + ".mode");
|
||||||
|
|
||||||
|
String remoteDirectoryMode =
|
||||||
|
(String) project.getContext().getVariable(
|
||||||
|
"maven.repo." + repository + ".directory.mode");
|
||||||
|
|
||||||
String passiveModeOn =
|
String passiveModeOn =
|
||||||
(String) project.getContext().getVariable(
|
(String) project.getContext().getVariable(
|
||||||
"maven.repo." + repository + ".passiveModeOn");
|
"maven.repo." + repository + ".passiveModeOn");
|
||||||
@ -120,7 +124,11 @@ public class RepositoryInfoBuilder
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (remoteMode == null) {
|
if (remoteMode == null) {
|
||||||
remoteMode = "664";
|
remoteMode = "g+w";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (remoteDirectoryMode == null) {
|
||||||
|
remoteDirectoryMode = remoteMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
repoInfo.setUserName(username);
|
repoInfo.setUserName(username);
|
||||||
@ -129,6 +137,7 @@ public class RepositoryInfoBuilder
|
|||||||
repoInfo.setPrivateKey(privateKey);
|
repoInfo.setPrivateKey(privateKey);
|
||||||
repoInfo.setGroup(remoteGroup);
|
repoInfo.setGroup(remoteGroup);
|
||||||
repoInfo.setMode(remoteMode);
|
repoInfo.setMode(remoteMode);
|
||||||
|
repoInfo.setDirectoryMode(remoteDirectoryMode);
|
||||||
repoInfo.setUrl(url);
|
repoInfo.setUrl(url);
|
||||||
repoInfo.setProxyHost(proxyHost);
|
repoInfo.setProxyHost(proxyHost);
|
||||||
repoInfo.setProxyUserName(proxyUser);
|
repoInfo.setProxyUserName(proxyUser);
|
||||||
|
|||||||
@ -23,7 +23,7 @@ package org.apache.maven.deploy;
|
|||||||
* perform a deployment.
|
* perform a deployment.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:michal.maczka@dimatics.com">Michal Maczka</a>
|
* @author <a href="mailto:michal.maczka@dimatics.com">Michal Maczka</a>
|
||||||
* @version $Id: RepositoryInfo.java,v 1.7 2004/09/28 09:20:40 brett Exp $
|
* @version $Id: RepositoryInfo.java,v 1.8 2004/09/29 10:56:04 brett Exp $
|
||||||
*/
|
*/
|
||||||
public class RepositoryInfo
|
public class RepositoryInfo
|
||||||
{
|
{
|
||||||
@ -58,6 +58,9 @@ public class RepositoryInfo
|
|||||||
/** File mode. */
|
/** File mode. */
|
||||||
private String mode;
|
private String mode;
|
||||||
|
|
||||||
|
/** Directory mode. */
|
||||||
|
private String directoryMode;
|
||||||
|
|
||||||
/** The passpharse of the user's private key file */
|
/** The passpharse of the user's private key file */
|
||||||
private String passphrase;
|
private String passphrase;
|
||||||
|
|
||||||
@ -190,6 +193,16 @@ public class RepositoryInfo
|
|||||||
this.privateKey = privateKey;
|
this.privateKey = privateKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDirectoryMode()
|
||||||
|
{
|
||||||
|
return directoryMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDirectoryMode( String directoryMode )
|
||||||
|
{
|
||||||
|
this.directoryMode = directoryMode;
|
||||||
|
}
|
||||||
|
|
||||||
public String getMode()
|
public String getMode()
|
||||||
{
|
{
|
||||||
return mode;
|
return mode;
|
||||||
|
|||||||
@ -42,7 +42,7 @@ import org.apache.maven.deploy.exceptions.TransferFailedException;
|
|||||||
*
|
*
|
||||||
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
|
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
|
||||||
* @author <a href="mailto:michal.maczka@dimatics.com">Michal Maczka</a>
|
* @author <a href="mailto:michal.maczka@dimatics.com">Michal Maczka</a>
|
||||||
* @version $Id: FtpDeployer.java,v 1.13 2004/09/28 09:20:40 brett Exp $
|
* @version $Id: FtpDeployer.java,v 1.14 2004/09/29 10:56:04 brett Exp $
|
||||||
*
|
*
|
||||||
* @todo review exception handling
|
* @todo review exception handling
|
||||||
* @todo don't spool to System.out
|
* @todo don't spool to System.out
|
||||||
@ -54,6 +54,7 @@ public class FtpDeployer extends AbstractDeployer
|
|||||||
public final static String PROTOCOL = "ftp://";
|
public final static String PROTOCOL = "ftp://";
|
||||||
|
|
||||||
private FTPClient ftp = null;
|
private FTPClient ftp = null;
|
||||||
|
private RepositoryInfo repoInfo = null;
|
||||||
private static final Log LOG = LogFactory.getLog(FtpDeployer.class);
|
private static final Log LOG = LogFactory.getLog(FtpDeployer.class);
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@ -129,15 +130,17 @@ public class FtpDeployer extends AbstractDeployer
|
|||||||
{
|
{
|
||||||
ftp.enterLocalPassiveMode();
|
ftp.enterLocalPassiveMode();
|
||||||
}
|
}
|
||||||
|
handleCommand( ftp.changeWorkingDirectory(repoInfo.getBasedir()));
|
||||||
ftp.changeWorkingDirectory(repoInfo.getBasedir());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
throw new AuthenticationException("Cannot login to remote system",e);
|
throw new AuthenticationException("Cannot login to remote system",e);
|
||||||
}
|
}
|
||||||
|
catch (TransferFailedException e)
|
||||||
|
{
|
||||||
|
throw new AuthenticationException("Cannot locate base directory", e );
|
||||||
|
}
|
||||||
|
this.repoInfo = repoInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@ -170,21 +173,30 @@ public class FtpDeployer extends AbstractDeployer
|
|||||||
String[] dirs = StringUtils.split(request.dirname(), "/");
|
String[] dirs = StringUtils.split(request.dirname(), "/");
|
||||||
for (int i = 0; i < dirs.length; i++)
|
for (int i = 0; i < dirs.length; i++)
|
||||||
{
|
{
|
||||||
ftp.makeDirectory(dirs[i]);
|
if ( !ftp.changeWorkingDirectory(dirs[i])) {
|
||||||
ftp.changeWorkingDirectory(dirs[i]);
|
handleCommand( ftp.makeDirectory(dirs[i]));
|
||||||
|
// Ignore errors
|
||||||
|
ftp.sendSiteCommand( "CHGRP " + repoInfo.getGroup() + " " + dirs[i] );
|
||||||
|
ftp.sendSiteCommand( "CHMOD " + repoInfo.getDirectoryMode() + " " + dirs[i] );
|
||||||
|
handleCommand( ftp.changeWorkingDirectory(dirs[i]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ftp.storeFile(
|
handleCommand( ftp.storeFile(
|
||||||
request.filename(),
|
request.filename(),
|
||||||
new FileInputStream(request.getSrcFile()));
|
new FileInputStream(request.getSrcFile())));
|
||||||
// TODO: test first, then mark MPARTIFACT-24 complete
|
// Ignore errors
|
||||||
//ftp.executeSiteCommand( "CHGRP " + request.getGroup() + " " + request.filename() );
|
ftp.sendSiteCommand( "CHGRP " + repoInfo.getGroup() + " " + request.filename() );
|
||||||
//ftp.executeSiteCommand( "CHMOD " + request.getMode() + " " + request.filename() );
|
ftp.sendSiteCommand( "CHMOD " + repoInfo.getMode() + " " + request.filename() );
|
||||||
for (int i = 0; i < dirs.length; i++)
|
for (int i = 0; i < dirs.length; i++)
|
||||||
{
|
{
|
||||||
ftp.changeWorkingDirectory("..");
|
handleCommand( ftp.changeWorkingDirectory(".."));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
catch (TransferFailedException e)
|
||||||
|
{
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new TransferFailedException(e.getMessage(),e);
|
throw new TransferFailedException(e.getMessage(),e);
|
||||||
@ -192,6 +204,14 @@ public class FtpDeployer extends AbstractDeployer
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleCommand( boolean response ) throws TransferFailedException
|
||||||
|
{
|
||||||
|
if ( !response )
|
||||||
|
{
|
||||||
|
throw new TransferFailedException( "Error executing FTP command" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of the Class
|
* Description of the Class
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
</properties>
|
</properties>
|
||||||
<body>
|
<body>
|
||||||
<release version="1.4.1" date="in CVS">
|
<release version="1.4.1" date="in CVS">
|
||||||
|
<action dev="brett" type="fix">Improve error handling in FTPDeployer</action>
|
||||||
<action dev="brett" type="fix" issue="MPARTIFACT-38">Allow scpexe protocol to work better with args</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-38">Allow scpexe protocol to work better with args</action>
|
||||||
<action dev="brett" type="fix" issue="MPARTIFACT-34">Check return code of spawned external processes</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-34">Check return code of spawned external processes</action>
|
||||||
<action dev="brett" type="fix" issue="MPARTIFACT-32">Remove old snapshots that were created with symlinks before deployment.</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-32">Remove old snapshots that were created with symlinks before deployment.</action>
|
||||||
@ -36,6 +37,7 @@
|
|||||||
<action dev="brett" type="fix" issue="MPARTIFACT-30">Fix group setting for scp deployer</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-30">Fix group setting for scp deployer</action>
|
||||||
<action dev="brett" type="fix" issue="MPARTIFACT-12">Add mode setting for remote repository</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-12">Add mode setting for remote repository</action>
|
||||||
<action dev="brett" type="fix" issue="MPARTIFACT-11">Fix group setting for SFTP deployer</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-11">Fix group setting for SFTP deployer</action>
|
||||||
|
<action dev="brett" type="fix" issue="MPARTIFACT-24">Fix group setting for FTP deployer</action>
|
||||||
</release>
|
</release>
|
||||||
<release version="1.4" date="2004-07-10">
|
<release version="1.4" date="2004-07-10">
|
||||||
<action dev="brett" type="fix" issue="MPARTIFACT-23">Add overwrite option to unzip - necessary to run in batch mode</action>
|
<action dev="brett" type="fix" issue="MPARTIFACT-23">Add overwrite option to unzip - necessary to run in batch mode</action>
|
||||||
|
|||||||
@ -108,7 +108,19 @@
|
|||||||
<td>
|
<td>
|
||||||
The remote file mode (UNIX permissions) to which
|
The remote file mode (UNIX permissions) to which
|
||||||
the artifact will be set to after it
|
the artifact will be set to after it
|
||||||
is deployed. Default is <code>664</code>.
|
is deployed. Default is <code>g+w</code>.
|
||||||
|
</td>
|
||||||
|
<td>Yes</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>maven.repo.x.directory.mode</td>
|
||||||
|
<td>
|
||||||
|
The remote directory mode (UNIX permissions)
|
||||||
|
when directories are created while deploying the artifact.
|
||||||
|
Default is <code>maven.repo.x.mode</code>.
|
||||||
|
<b>Warning:</b> if you are using an octal file permission,
|
||||||
|
you should not use the default value for this as you should
|
||||||
|
add the executable permission for directories.
|
||||||
</td>
|
</td>
|
||||||
<td>Yes</td>
|
<td>Yes</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user