michal 2003/06/17 15:06:01
Modified: src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer
DefaultArtifactDeployer.java
src/plugins-build/artifact project.xml
Added: src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers
Deployer.java HttpDeployer.java
AbstractDeployer.java FtpDeployer.java
SshDeployer.java FileDeployer.java
src/plugins-build/artifact/src/main/org/apache/maven/deploy/exceptions
UnsupportedProtocolDeployException.java
DeployException.java
NotAuthorizedDeployException.java
ProxyNotAuthorizedDeployException.java
src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer
MavenDeployRequest.java
src/plugins-build/artifact/src/main/org/apache/maven/deploy
DeployRequest.java DeployTool.java
Removed: src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer
MavenAuthenticationInfo.java
src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/deploy
SshDeployer.java HttpDeployer.java
AbstractDeployer.java Deployer.java
GenericAuthenticationInfo.java
AuthenticationInfo.java FtpDeployer.java
Log:
Refactoring to make it simillar to fetch component in maven-new.
Code is not yet fully functional.
Revision Changes Path
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/Deployer.java
Index: Deployer.java
===================================================================
package org.apache.maven.deploy.deployers;
import org.apache.maven.deploy.DeployRequest;
import org.apache.maven.deploy.exceptions.DeployException;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
* Interface for all Maven deployers.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: Deployer.java,v 1.1 2003/06/17 22:05:59 michal Exp $
*/
public interface Deployer
{
/**
*
* @param request
*/
public void deploy(DeployRequest request) throws DeployException;
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/HttpDeployer.java
Index: HttpDeployer.java
===================================================================
package org.apache.maven.deploy.deployers;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.maven.deploy.DeployRequest;
import org.apache.maven.deploy.exceptions.DeployException;
/**
* An HTTP deployer based the Commons HttpClient library.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: HttpDeployer.java,v 1.1 2003/06/17 22:05:59 michal Exp $
*
* @todo still have to account for differing setups for people deploying to
* their own sites and to the central repository.
*
* @todo deal with proxies
* @todo deal with authentication
*/
public class HttpDeployer extends AbstractDeployer
{
/**
* Description of the Method
*/
public void deploy(DeployRequest request) throws DeployException
{
URL url = null;
try
{
url = new URL(request.getUrl());
}
catch (MalformedURLException murle)
{
}
Credentials creds =
new UsernamePasswordCredentials(
request.getUser(),
request.getPass());
//create a singular HttpClient object
HttpClient client = new HttpClient();
//establish a connection within 5 seconds
client.setConnectionTimeout(5000);
//set username / password
if (creds != null)
{
client.getState().setCredentials(null, creds);
}
//
HostConfiguration hc = new HostConfiguration();
hc.setHost(request.getHost());
//start a session with the webserver
client.setHostConfiguration(hc);
//create a method object
PutMethod method = new PutMethod(url.getPath());
try
{
method.setRequestBody(new FileInputStream(request.getInputFile()));
}
catch(FileNotFoundException io)
{
throw new DeployException("input file: '"+ request.getInputFile() + " not
found ");
}
//turn follow redirects off
method.setFollowRedirects(false);
//turn strict mode on
method.setStrictMode(false);
//execute the method
try
{
client.executeMethod(method);
}
catch (HttpException he)
{
System.err.println("Http error connecting to '" + url + "'");
System.err.println(he.getMessage());
System.exit(-4);
}
catch (IOException ioe)
{
System.err.println("Unable to connect to '" + url + "'");
System.exit(-3);
}
//get the request headers
Header[] requestHeaders = method.getRequestHeaders();
//get the response headers
Header[] responseHeaders = method.getResponseHeaders();
//get the response body
byte[] responseBody = method.getResponseBody();
method.releaseConnection();
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/AbstractDeployer.java
Index: AbstractDeployer.java
===================================================================
package org.apache.maven.deploy.deployers;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
* Base deployer from which all deployers are derived.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: AbstractDeployer.java,v 1.1 2003/06/17 22:05:59 michal Exp $
*/
public abstract class AbstractDeployer implements Deployer
{
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/FtpDeployer.java
Index: FtpDeployer.java
===================================================================
package org.apache.maven.deploy.deployers;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import org.apache.commons.net.ProtocolCommandEvent;
import org.apache.commons.net.ProtocolCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.maven.deploy.DeployRequest;
import org.apache.maven.deploy.exceptions.DeployException;
/**
* An FTP deployer based on the FTPClient in the Commons Net package.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
*
* @version $Id: FtpDeployer.java,v 1.1 2003/06/17 22:05:59 michal Exp $
*
* @todo account for username and password.
*/
public class FtpDeployer extends AbstractDeployer
{
/**
* Description of the Method
*/
public void deploy(DeployRequest request) throws DeployException
{
String username = request.getUser();
String password = request.getPass();
String host = request.getHost();
FTPClient ftp = new FTPClient();
ftp.addProtocolCommandListener(
new PrintCommandListener(new PrintWriter(System.out)));
try
{
int reply;
if ( request.getPort()!= DeployRequest.UNKNOWN_PORT)
{
ftp.connect(host, request.getPort());
}
else
{
ftp.connect(host);
}
System.out.println("Connected to " + host + ".");
// After connection attempt, you should check the reply code to verify
// success.
reply = ftp.getReplyCode();
if (FTPReply.isPositiveCompletion(reply) == false)
{
ftp.disconnect();
System.err.println();
throw new DeployException("FTP server refused connection.");
}
}
catch (IOException e)
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
// do nothing
}
}
throw new DeployException("Could not connect to server.");
}
__main : try
{
if (ftp.login(username, password) == false)
{
ftp.logout();
break __main;
}
System.out.println("Remote system is " + ftp.getSystemName());
// Set to binary mode.
ftp.setFileType(FTP.BINARY_FILE_TYPE);
// Use passive mode as default because most of us are
// behind firewalls these days.
ftp.enterLocalPassiveMode();
String workingDir = request.getOutputDir();
String filename = request.getOutputFile();
System.out.println("Working directory " + workingDir);
System.out.println("Filename: " + filename);
ftp.makeDirectory(workingDir);
ftp.changeWorkingDirectory( workingDir);
ftp.storeFile(filename, new FileInputStream(request.getInputFile()));
ftp.logout();
}
catch (FTPConnectionClosedException e)
{
throw new DeployException("Server closed connection.");
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
// do nothing
}
}
}
}
/**
* Description of the Class
*/
public class PrintCommandListener implements ProtocolCommandListener
{
private PrintWriter writer;
/**
* Constructor for the PrintCommandListener object
*
* @param writer
*/
public PrintCommandListener(PrintWriter writer)
{
this.writer = writer;
}
/**
* Description of the Method
*/
public void protocolCommandSent(ProtocolCommandEvent event)
{
writer.print(event.getMessage());
writer.flush();
}
/**
* Description of the Method
*/
public void protocolReplyReceived(ProtocolCommandEvent event)
{
writer.print(event.getMessage());
writer.flush();
}
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/SshDeployer.java
Index: SshDeployer.java
===================================================================
package org.apache.maven.deploy.deployers;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.UserInfo;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.Channel;
import java.io.File;
import java.io.FileInputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import org.apache.maven.deploy.DeployRequest;
/**
* An ssh2 deployer that uses the JSch library and the JCE. We will first try to
* use public keys for authentication and if that doesn't work then we fall back
* to using the login and password of the user in question. NOTE: We are
* assuming the standard port of 22.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: SshDeployer.java,v 1.1 2003/06/17 22:05:59 michal Exp $
* @todo still have to account for differing setups for people deploying to
* their own sites and to the central repository.
*/
public class SshDeployer extends AbstractDeployer
{
public final static int DEFAULT_SSH_PORT = 22;
/**
* @see Deployer#project
*/
public void deploy(DeployRequest request)
{
try
{
JSch jsch = new JSch();
int port = request.getPort();
if (port == DeployRequest.UNKNOWN_PORT)
{
port = DEFAULT_SSH_PORT;
}
Session session =
jsch.getSession(request.getHost(), port);
//22
// Look for the private key and use it if available.
File privateKey = new File(request.getPrivateKey());
if (privateKey.exists())
{
session.setIdentity(privateKey.getPath());
}
// username and password will be given via UserInfo interface.
UserInfo ui = new MavenUserInfo(request);
session.setUserInfo(ui);
session.connect();
String inputFile = request.getInputFile();
// exec 'scp -t remoteArtifactPath' remotely
String command =
"scp -t "
+ request.getOutputDir()
+ "/"
+ request.getOutputFile();
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
// plug I/O streams for remote scp
PipedOutputStream out = new PipedOutputStream();
channel.setInputStream(new PipedInputStream(out));
PipedInputStream in = new PipedInputStream();
channel.setOutputStream(new PipedOutputStream(in));
channel.connect();
byte[] tmp = new byte[1];
// wait for '\0'
do
{
in.read(tmp, 0, 1);
}
while (tmp[0] != 0);
// send "C0644 filesize filename", where filename should not include '/'
int filesize = (int) (new File( inputFile )).length();
command = "C0644 " + filesize + " " + inputFile;
command += "\n";
out.write(command.getBytes());
out.flush();
// wait for '\0'
do
{
in.read(tmp, 0, 1);
}
while (tmp[0] != 0);
// send a content of localArtifactPath
FileInputStream fis = new FileInputStream(inputFile);
byte[] buf = new byte[1024];
while (true)
{
int len = fis.read(buf, 0, buf.length);
if (len <= 0)
{
break;
}
out.write(buf, 0, len);
out.flush();
}
// send '\0'
buf[0] = 0;
out.write(buf, 0, 1);
out.flush();
// wait for '\0'
do
{
in.read(tmp, 0, 1);
}
while (tmp[0] != 0);
}
catch (Exception e)
{
System.out.println(e);
}
}
/**
* MavenUserInfo class which returns the necessary name and password from
* the POM to secure an ssh connection.
*/
public class MavenUserInfo implements UserInfo
{
DeployRequest request;
MavenUserInfo(DeployRequest request)
{
this.request = request;
}
/**
* Gets the name attribute of the MavenUserInfo object
*/
public String getName()
{
return request.getUser();
}
/**
* Gets the password attribute of the MavenUserInfo object
*/
public String getPassword()
{
return request.getPass();
}
/**
* Gets the passphrase attribute of the MavenUserInfo object
*/
public String getPassphrase(String message)
{
return request.getPassphrase();
}
/**
* Required to satisfy UserInfo interface. Not used currently.
*/
public boolean promptNameAndPassphrase(String message)
{
return true;
}
/**
* Required to satisfy UserInfo interface. Not used currently.
*/
public boolean promptNameAndPassword(String message)
{
return true;
}
/**
* Required to satisfy UserInfo interface. Not used currently.
*/
public boolean retry()
{
return true;
}
/**
* Required to satisfy UserInfo interface. Not used currently.
*/
public boolean prompt(String message)
{
return true;
}
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/deployers/FileDeployer.java
Index: FileDeployer.java
===================================================================
package org.apache.maven.deploy.deployers;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.maven.deploy.DeployRequest;
import org.apache.maven.deploy.exceptions.DeployException;
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: FileDeployer.java,v 1.1 2003/06/17 22:05:59 michal Exp $
*/
public class FileDeployer implements Deployer
{
/**
* @see org.apache.maven.fetch.fetchers.Fetcher#fetchUrl(java.lang.String,
java.io.OutputStream)
*/
public void deploy(DeployRequest request) throws DeployException
{
try
{
File inputFile = new File( request.getInputFile() );
File outputFile = new File( request.getOutputDir(),
request.getOutputFile());
FileUtils.copyFile(inputFile, outputFile);
}
catch (IOException e)
{
throw new DeployException("Cannot copy file: " + e.getMessage());
}
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/exceptions/UnsupportedProtocolDeployException.java
Index: UnsupportedProtocolDeployException.java
===================================================================
package org.apache.maven.deploy.exceptions;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: UnsupportedProtocolDeployException.java,v 1.1 2003/06/17 22:06:00
michal Exp $
*/
public class UnsupportedProtocolDeployException extends DeployException
{
/**
* @param message
*/
public UnsupportedProtocolDeployException(String message)
{
super(message);
}
/**
* @param message
* @param cause
*/
public UnsupportedProtocolDeployException(String message, Throwable cause)
{
super(message, cause);
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/exceptions/DeployException.java
Index: DeployException.java
===================================================================
package org.apache.maven.deploy.exceptions;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: DeployException.java,v 1.1 2003/06/17 22:06:00 michal Exp $
*/
public class DeployException extends Exception
{
private final String message;
private final Throwable cause;
public DeployException(String message, Throwable cause)
{
this.message = message;
this.cause = cause;
}
public DeployException(String message)
{
this.message = message;
this.cause = null;
}
/**
* @return
*/
public Throwable getCause()
{
return cause;
}
/**
* @return
*/
public String getMessage()
{
return message;
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/exceptions/NotAuthorizedDeployException.java
Index: NotAuthorizedDeployException.java
===================================================================
package org.apache.maven.deploy.exceptions;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: NotAuthorizedDeployException.java,v 1.1 2003/06/17 22:06:00 michal
Exp $
*/
public class NotAuthorizedDeployException extends DeployException
{
/**
* @param message
*/
public NotAuthorizedDeployException(String message)
{
super(message);
}
/**
* @param message
* @param cause
*/
public NotAuthorizedDeployException(String message, Throwable cause)
{
super(message, cause);
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/exceptions/ProxyNotAuthorizedDeployException.java
Index: ProxyNotAuthorizedDeployException.java
===================================================================
package org.apache.maven.deploy.exceptions;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: ProxyNotAuthorizedDeployException.java,v 1.1 2003/06/17 22:06:00
michal Exp $
*/
public class ProxyNotAuthorizedDeployException extends DeployException
{
/**
* @param message
*/
public ProxyNotAuthorizedDeployException(String message)
{
super(message);
}
/**
* @param message
* @param cause
*/
public ProxyNotAuthorizedDeployException(String message, Throwable cause)
{
super(message, cause);
// TODO Auto-generated constructor stub
}
}
1.2 +61 -97
maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
Index: DefaultArtifactDeployer.java
===================================================================
RCS file:
/home/cvs/maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultArtifactDeployer.java 16 Jun 2003 14:26:01 -0000 1.1
+++ DefaultArtifactDeployer.java 17 Jun 2003 22:06:00 -0000 1.2
@@ -62,12 +62,10 @@
import java.util.Date;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.MavenConstants;
import org.apache.maven.MavenException;
-import org.apache.maven.artifact.deployer.deploy.Deployer;
-import org.apache.maven.artifact.deployer.deploy.FtpDeployer;
-import org.apache.maven.artifact.deployer.deploy.HttpDeployer;
-import org.apache.maven.artifact.deployer.deploy.SshDeployer;
+import org.apache.maven.deploy.DeployTool;
import org.apache.maven.project.Project;
/**
@@ -191,72 +189,64 @@
String version)
throws MavenException
{
- String repoPath = getRepositoryPath(type, project, version);
- String host = getDistributionHost(project);
- String remotePath = getDistributionDirectory(project) + "/" + repoPath;
- Deployer deployer = getDeployer(host);
-
- //Cut of protcol prefix from host name
-
- host = host.substring( host.indexOf("://") + 3 );
-
- System.out.println(
- "Deploying: '"
- + artifact
- + "' to host: '"
- + host
- + "' remote path: '"
- + remotePath);
- MavenAuthenticationInfo authInfo = new MavenAuthenticationInfo(project);
- deployer.deploy(authInfo, host, artifact, remotePath);
- System.out.println("Deployment finished");
- }
-
- /**
- * @param project
- * @return
- */
- private String getDistributionHost(Project project) throws MavenException
- {
- String host = host = project.getDistributionSite();
- if (host == null || host.length() == 0)
- {
- host =
- (String) project.getContext().getVariable(
- "maven.deployer.host");
- }
- if (host == null)
- {
- throw new MavenException("Distribution host is not set");
- }
- return host;
- }
+ DeployTool deployTool = new DeployTool();
- /**
- *
- * @param project
- * @return
- * @throws MavenException
- */
- private String getDistributionDirectory(Project project)
- throws MavenException
- {
+ // trick add special values to context for default repository;
- String dir = project.getDistributionDirectory();
+ String repos =
+ (String) project.getContext().getVariable("maven.deploy.repos");
- if (dir == null || dir.length() == 0)
+ String distSite = project.getDistributionSite();
+ if (distSite != null && distSite.length() > 0)
{
- dir =
- (String) project.getContext().getVariable(
- "maven.deployer.remote.directory");
+ project.getContext().setVariable(
+ "maven.deploy.default.url",
+ project.getDistributionSite());
+ project.getContext().setVariable(
+ "maven.deploy.default.dir",
+ project.getDistributionDirectory());
+ repos = "default, " + repos;
}
- if (dir == null)
+
+ String repositoryPath = getRepositoryPath(type, project, version);
+
+ String[] repoArray = StringUtils.split(repos, ",");
+
+ System.out.println(
+ "Will deploy to " + repoArray.length + " repo(s): " + repos);
+ for (int i = 0; i < repoArray.length; i++)
{
- throw new MavenException("Distribution directory is not set");
+
+ String repo = repoArray[i];
+ System.out.println("Deploying to repo: " + repo);
+
+ MavenDeployRequest request =
+ new MavenDeployRequest(
+ project,
+ repo,
+ artifact,
+ repositoryPath,
+ getRepositoryFile(type, project, version));
+
+ System.out.println(
+ "Deploying: '"
+ + artifact
+ + "' to host: '"
+ + request.getHost()
+ + "' remote path: '"
+ + request.getOutputDir());
+ try
+ {
+ deployTool.performUpload(request);
+ }
+ catch (Exception e)
+ {
+ throw new MavenException("Cannot deploy", e);
+ }
+
}
- return dir;
}
@@ -285,14 +275,21 @@
path.append(project.getArtifactDirectory());
path.append("/");
path.append(type + "s");
- path.append("/");
+ return path.toString();
+ }
+
+ private String getRepositoryFile(
+ String type,
+ Project project,
+ String version)
+ {
+ StringBuffer path = new StringBuffer();
path.append(project.getArtifactId());
path.append("-");
path.append(version);
path.append(".");
path.append(extensionForType(type));
return path.toString();
-
}
/**
@@ -318,39 +315,6 @@
return "jar";
}
return type;
- }
-
- /**
- *
- * @param host
- * @param project
- * @return
- * @throws MavenException
- */
- private Deployer getDeployer(String host) throws MavenException
- {
- Deployer deployer = null;
-
- if (host.startsWith("http://"))
- {
- deployer = new HttpDeployer();
- }
- else
- if (host.startsWith("ssh://"))
- {
- deployer = new SshDeployer();
- }
- else
- if (host.startsWith("ftp://"))
- {
- deployer = new FtpDeployer();
- }
- else
- {
- throw new MavenException(
- "unsupported protocol: '" + host + "'");
- }
- return deployer;
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/artifact/deployer/MavenDeployRequest.java
Index: MavenDeployRequest.java
===================================================================
package org.apache.maven.artifact.deployer;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import org.apache.maven.deploy.DeployRequest;
import org.apache.maven.project.Project;
/**
*
* The Bean which serves as Proxy for Jelly scripts To Artifact Deployement API
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: MavenDeployRequest.java,v 1.1 2003/06/17 22:06:00 michal Exp $
*/
public class MavenDeployRequest extends DeployRequest
{
/**
*
* @param project
* @param repository This is alias name of the repository
* like </i>repo1</i> taken from <i>maven.deploy.repos= repo1, repo2</i>
* @param inputDir
* @param outputDir
* @param outputFile
*/
public MavenDeployRequest(
Project project,
String repository,
String inputFile,
String outputDir,
String outputFile)
{
super();
String username =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".username");
System.out.println(repository + " username:" + username);
String password =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".password");
System.out.println(repository + " password: '" + password + "'");
String passphrase =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".passphrase");
String privateKey =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".privatekey");
String url =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".url");
String dir =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".dir");
String port =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".port");
String proxyHost =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".proxy.host");
String proxyUser =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".proxy.username");
String proxyPassword =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".proxy.password");
String proxyPort =
(String) project.getContext().getVariable(
"maven.deploy." + repository + ".proxy.port");
setUser(username);
setPass(password);
setPassphrase(passphrase);
setPrivateKey(url);
setUrl(url);
try
{
setPort(Integer.parseInt(port));
}
catch (Exception e)
{
setProxyHost(proxyHost);
setProxyUser(proxyUser);
setProxyPass(proxyPassword);
}
try
{
setProxyPort(Integer.parseInt(proxyPort));
}
catch (Exception e)
{
}
setInputFile(inputFile);
String ouputDir = dir + "/" + outputDir;
setOutputFile(outputFile);
setOutputDir(ouputDir);
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/DeployRequest.java
Index: DeployRequest.java
===================================================================
package org.apache.maven.deploy;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: DeployRequest.java,v 1.1 2003/06/17 22:06:00 michal Exp $
*/
public class DeployRequest
{
public final static int UNKNOWN_PORT = -1;
private String url;
private int port = UNKNOWN_PORT;
private String outputDir;
private String outputFile;
private String inputFile;
/*
* Resource access user / pass /group
*/
private String user;
private String pass;
private String group;
private String passphrase;
private String privateKey;
public DeployRequest()
{
}
public DeployRequest(String url)
{
this.url = url;
}
// private boolean resumeDownload = false;
private String headerUserAgent = "Maven-Deploy-" + DeployTool.VERSION;
/*
* Proxy settings. If proxyHost is not null, settings will be used.
*/
private String proxyHost = null;
private String proxyUser = null;
private String proxyPass = null;
private int proxyPort = UNKNOWN_PORT;
/**
* @return
*/
public int getPort()
{
return port;
}
/**
* @param port
*/
public void setPort(int port)
{
this.port = port;
}
/**
* @return
*/
public String getPassphrase()
{
return passphrase;
}
/**
* @param passphrase
*/
public void setPassphrase(String passphrase)
{
this.passphrase = passphrase;
}
/**
* @return
*/
public String getPrivateKey()
{
return privateKey;
}
/**
* @param privateKey
*/
public void setPrivateKey(String privateKey)
{
this.privateKey = privateKey;
}
/**
* @return
*/
public String getGroup()
{
return group;
}
/**
* @param group
*/
public void setGroup(String group)
{
this.group = group;
}
/**
* @return
*/
public String getHeaderUserAgent()
{
return headerUserAgent;
}
/**
* @param headerUserAgent
*/
public void setHeaderUserAgent(String headerUserAgent)
{
this.headerUserAgent = headerUserAgent;
}
/**
* @return
*/
public String getInputFile()
{
return inputFile;
}
/**
* @param inputFile
*/
public void setInputFile(String inputFile)
{
this.inputFile = inputFile;
}
/**
* @return
*/
public String getOutputDir()
{
return outputDir;
}
/**
* @param outputDir
*/
public void setOutputDir(String outputDir)
{
this.outputDir = outputDir;
}
/**
* @return
*/
public String getOutputFile()
{
return outputFile;
}
/**
* @param outputFile
*/
public void setOutputFile(String outputFile)
{
this.outputFile = outputFile;
}
/**
* @return
*/
public String getPass()
{
return pass;
}
/**
* @param pass
*/
public void setPass(String pass)
{
this.pass = pass;
}
/**
* @return
*/
public String getProxyHost()
{
return proxyHost;
}
/**
* @param proxyHost
*/
public void setProxyHost(String proxyHost)
{
this.proxyHost = proxyHost;
}
/**
* @return
*/
public String getProxyPass()
{
return proxyPass;
}
/**
* @param proxyPass
*/
public void setProxyPass(String proxyPass)
{
this.proxyPass = proxyPass;
}
/**
* @return
*/
public int getProxyPort()
{
return proxyPort;
}
/**
* @param proxyPort
*/
public void setProxyPort(int proxyPort)
{
this.proxyPort = proxyPort;
}
/**
* @return
*/
public String getProxyUser()
{
return proxyUser;
}
/**
* @param proxyUser
*/
public void setProxyUser(String proxyUser)
{
this.proxyUser = proxyUser;
}
/**
* @return
*/
public String getUrl()
{
return url;
}
/**
* @param url
*/
public void setUrl(String url)
{
this.url = url;
}
/**
* @return
*/
public String getUser()
{
return user;
}
/**
* @param user
*/
public void setUser(String user)
{
this.user = user;
}
/**
* Cut of protocol from the URL
* @return
*/
public String getHost()
{
if (url == null )
{
return "localhost";
}
return url.substring(url.indexOf("://") + 3);
}
}
1.1
maven/src/plugins-build/artifact/src/main/org/apache/maven/deploy/DeployTool.java
Index: DeployTool.java
===================================================================
package org.apache.maven.deploy;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import org.apache.maven.deploy.deployers.Deployer;
import org.apache.maven.deploy.deployers.FileDeployer;
import org.apache.maven.deploy.deployers.FtpDeployer;
import org.apache.maven.deploy.deployers.HttpDeployer;
import org.apache.maven.deploy.deployers.SshDeployer;
import org.apache.maven.deploy.exceptions.DeployException;
import org.apache.maven.deploy.exceptions.UnsupportedProtocolDeployException;
/**
*
* @author <a href="[EMAIL PROTECTED]">Michal Maczka</a>
* @version $Id: DeployTool.java,v 1.1 2003/06/17 22:06:00 michal Exp $
*/
public class DeployTool
{
public static final String VERSION = "1.0-dev";
public void performUpload(DeployRequest request) throws DeployException
{
String url = request.getUrl();
Deployer deployer = null;
if (url.startsWith("http://"))
{
deployer = new HttpDeployer();
}
if (url.startsWith("file://"))
{
deployer = new FileDeployer();
}
if (url.startsWith("ssh://"))
{
deployer = new SshDeployer();
}
if (url.startsWith("ftp://"))
{
deployer = new FtpDeployer();
}
if (deployer == null)
{
throw new UnsupportedProtocolDeployException(url);
}
deployer.deploy(request);
}
}
1.2 +8 -0 maven/src/plugins-build/artifact/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/maven/src/plugins-build/artifact/project.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- project.xml 16 Jun 2003 14:26:01 -0000 1.1
+++ project.xml 17 Jun 2003 22:06:01 -0000 1.2
@@ -46,6 +46,14 @@
<version>2.0-beta1</version>
<type>jar</type>
</dependency>
+
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>1.0</version>
+ <type>jar</type>
+ </dependency>
+
<dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]