You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ni...@apache.org on 2004/06/03 19:27:18 UTC
svn commit: rev 20784 - in avalon/trunk/tools/magic: . artifact/src/dist checksum jar/src/dist java/src/dist prepare/src/dist
Author: niclas
Date: Thu Jun 3 10:27:17 2004
New Revision: 20784
Removed:
avalon/trunk/tools/magic/checksum/
Modified:
avalon/trunk/tools/magic/artifact/src/dist/magic.bsh
avalon/trunk/tools/magic/artifact/src/dist/magic.properties
avalon/trunk/tools/magic/jar/src/dist/magic.bsh
avalon/trunk/tools/magic/java/src/dist/magic.bsh
avalon/trunk/tools/magic/magic.sequence
avalon/trunk/tools/magic/prepare/src/dist/magic.bsh
Log:
Artifact and Jar uploads through scp should now be much closer to working properly.
Modified: avalon/trunk/tools/magic/artifact/src/dist/magic.bsh
==============================================================================
--- avalon/trunk/tools/magic/artifact/src/dist/magic.bsh (original)
+++ avalon/trunk/tools/magic/artifact/src/dist/magic.bsh Thu Jun 3 10:27:17 2004
@@ -15,142 +15,39 @@
limitations under the License.
*/
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.Session;
+
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.net.URLConnection;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Properties;
+import java.util.LinkedList;
+import java.util.List;
import org.apache.avalon.magic.AbstractPlugin;
import org.apache.avalon.magic.Artifact;
-import org.apache.avalon.magic.Plugin;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.taskdefs.optional.ssh.Scp;
+import org.apache.tools.ant.taskdefs.optional.ssh.SSHUserInfo;
public class ArtifactPlugin extends AbstractPlugin
+ implements Serviceable
{
- public Artifact resolve( String artifactId )
- throws IOException
- {
- File definitionsDir = new File( m_Context.getProjectSystemDir(), "definitions" );
- File file = new File( definitionsDir, artifactId );
- Properties p = new Properties();
- if( file.exists() )
- {
- FileInputStream fis = new FileInputStream( file );
- try
- {
- p.load( fis );
- } finally
- {
- if( fis != null )
- fis.close();
- }
- }
-
- String repository = p.getProperty( "artifact.repository" );
- if( repository == null )
- repository = m_Context.getProperty( "artifact.repository" );
-
- String groupId = p.getProperty( "artifact.group" );
- if( groupId == null )
- groupId = artifactId;
-
- String version = p.getProperty( "artifact.version" );
- if( version == null )
- version = "1.0.dev-0";
-
- String type = p.getProperty( "artifact.type" );
- if( type == null )
- type = "jar";
-
- Artifact artifact = new Artifact( artifactId, groupId, version, type, repository );
- if( getLogger().isDebugEnabled() )
- getLogger().debug( "Artifact: " + artifact );
- return artifact;
- }
-
-
- public Artifact[] getDependencies( Artifact artifact )
- throws IOException
- {
- File definitionsDir = new File( m_Context.getProjectSystemDir(), "dependencies" );
- File file = new File( definitionsDir, artifact.getArtifactId() );
- if( ! file.exists() )
- return new Artifact[0];
- FileReader reader = null;
- BufferedReader br = null;
- ArrayList deps = new ArrayList();
- try
- {
- reader = new FileReader( file );
- br = new BufferedReader( reader );
- String line;
- while( ( line = br.readLine() ) != null )
- {
- line = line.trim();
- if( ! line.equals( "" ) )
- deps.add( line );
- }
- } catch( IOException e )
- {
- e.printStackTrace();
- throw e;
- } finally
- {
- if( reader != null )
- reader.close();
- if( br != null )
- br.close();
- }
- Artifact[] result = new Artifact[ deps.size() ];
- Iterator list = deps.iterator();
- for( int i=0 ; list.hasNext() ; i++ )
- {
- String dep = (String) list.next();
- result[i] = resolve( dep );
- }
- return result;
- }
-
+ private Object m_PreparePlugin;
- public ClassLoader getClassloader( Artifact[] artifacts )
- throws IOException
- {
- URL[] jars = getLocalURLs( artifacts );
- URLClassLoader classloader = new URLClassLoader( jars );
- return classloader;
- }
-
- public URL[] getLocalURLs( Artifact[] artifacts )
- throws IOException
+ public void service( ServiceManager man )
+ throws ServiceException
{
- URL[] jars = new URL[ artifacts.length ];
- for( int i=0 ; i < artifacts.length ; i++ )
- {
- File localFile = toLocalFile( artifacts[i] );
- if( ! localFile.exists() )
- {
- localFile.getParentFile().mkdirs();
- download( artifacts[i], localFile );
- }
- jars[i] = localFile.toURL();
- }
- return jars;
+ m_PreparePlugin = man.lookup( "prepare" );
}
public Path getClassPath( Artifact[] artifacts )
@@ -159,19 +56,7 @@
Path result = new Path( m_Project );
for( int i=0 ; i < artifacts.length ; i++ )
{
- File localFile = toLocalFile( artifacts[i] );
- if( ! localFile.exists() )
- {
- if( getLogger().isDebugEnabled() )
- getLogger().debug( artifacts[i] + " does NOT exists locally." );
- localFile.getParentFile().mkdirs();
- download( artifacts[i], localFile );
- }
- else
- {
- if( getLogger().isDebugEnabled() )
- getLogger().debug( artifacts[i] + " exists locally." );
- }
+ File localFile = artifacts[i].toLocalFile();
Path.PathElement pe = result.createPathElement();
pe.setLocation( localFile );
}
@@ -180,75 +65,87 @@
return result;
}
- public void upload( Artifact artifact, File content )
- {
- }
-
- private void download( Artifact artifact, File dest )
- throws IOException, MalformedURLException
+ public void install( Artifact artifact, File content )
+ throws IOException
{
- FileOutputStream out = null;
- BufferedOutputStream bos = null;
- InputStream in = null;
- BufferedInputStream bis = null;
- File dlFile = File.createTempFile( "~magic", ".tmp", dest.getParentFile() );
- dlFile.deleteOnExit();
try
{
- out = new FileOutputStream( dlFile );
- bos = new BufferedOutputStream( out );
- URL url = toRemoteURL( artifact );
- URLConnection conn = url.openConnection();
- conn.connect();
- in = conn.getInputStream();
- bis = new BufferedInputStream( in );
- int b;
- int counter = 0;
- while( ( b = bis.read() ) != -1 )
- {
- counter++;
- if( counter > 1000 )
- {
- counter = 0;
- System.out.print( "." );
- }
- bos.write( b );
- }
- System.out.println( "\nDownloaded: " + counter + " bytes." );
- dlFile.renameTo( dest );
- } finally
- {
- if( out != null )
- out.close();
- if( bos != null )
- bos.close();
- if( in != null )
- in.close();
- if( bis != null )
- bis.close();
- dlFile.delete();
+ File dest = artifact.toLocalFile();
+ PreparePlugin prepare = (PreparePlugin) m_PreparePlugin;
+ prepare.copyFile( content, dest );
+ } catch( Exception e )
+ {
+ e.printStackTrace();
+ throw new IOException( "Unable to install " + artifact );
}
}
- private URL toRemoteURL( Artifact artifact )
- throws MalformedURLException
- {
- String href = artifact.getRepository() + "/" +
- artifact.getGroupId() + "/" +
- artifact.getType() + "s/" +
- artifact.getArtifactId() + "-" +
- artifact.getVersion() + ".jar" ;
- return new URL( href );
- }
-
- private File toLocalFile( Artifact artifact )
+ public void upload( Artifact artifact )
+ throws IOException
{
- String href = m_Context.getProperty( "artifact.local.repository.dir" ) + "/" +
- artifact.getGroupId() + "/" +
- artifact.getType() + "s/" +
- artifact.getArtifactId() + "-" +
- artifact.getVersion() + ".jar" ;
- return new File( href );
+ int port = -1;
+ try
+ {
+ port = Integer.parseInt( m_Context.getProperty( "artifact.remote.port" ) );
+ } catch( NumberFormatException e )
+ {} // ignore
+
+ try
+ {
+ boolean trust = "true".equals( m_Context.getProperty( "artifact.remote.trust" ) );
+ boolean failOnError = "true".equals( m_Context.getProperty( "artifact.remote.fail.on.error" ) );
+ String host = m_Context.getProperty( "artifact.remote.host" );
+ String destDir = m_Context.getProperty( "artifact.remote.dir" );
+ String keyfile = m_Context.getProperty( "artifact.remote.keys.file" );
+ String knownhosts = m_Context.getProperty( "artifact.remote.knownhosts.file" );
+ String passphrase = m_Context.getProperty( "artifact.remote.passphrase" );
+ String password = m_Context.getProperty( "artifact.remote.password" );
+ String username = m_Context.getProperty( "artifact.remote.username" );
+
+ System.out.println( " Host:" + host );
+ System.out.println( " User:" + username );
+ System.out.println( " Dir:" + destDir );
+ System.out.println( " KeyFile:" + keyfile );
+ System.out.println( " Known:" + knownhosts );
+ System.out.println( " Phrase:" + passphrase );
+ System.out.println( "Password:" + password );
+
+ String fullDest = username + "@" + host + ":" + destDir + "/";
+
+ m_Project.addTaskDefinition( "scp", Scp.class );
+ Scp scp = (Scp) m_Project.createTask( "scp" );
+ scp.init();
+ scp.setFile( artifact.toLocalFile().getAbsolutePath() );
+ scp.setFailonerror( failOnError );
+ scp.setHost( host );
+
+ if( ! "".equals( keyfile ) )
+ scp.setKeyfile( keyfile );
+
+ if( ! "".equals( knownhosts ) )
+ scp.setKnownhosts( knownhosts );
+
+ if( ! "".equals( password ) )
+ scp.setPassword( password );
+ else
+ scp.setPassphrase( passphrase );
+
+
+ if( port != -1 )
+ scp.setPort( port );
+
+ scp.setTrust( trust );
+
+ if( ! "".equals( username ) )
+ scp.setUsername( username );
+ scp.setTodir( fullDest );
+
+ scp.execute();
+ } catch( Exception e )
+ {
+ e.printStackTrace();
+ throw new IOException( "Can't upload " + artifact );
+ }
}
}
Modified: avalon/trunk/tools/magic/artifact/src/dist/magic.properties
==============================================================================
--- avalon/trunk/tools/magic/artifact/src/dist/magic.properties (original)
+++ avalon/trunk/tools/magic/artifact/src/dist/magic.properties Thu Jun 3 10:27:17 2004
@@ -2,3 +2,26 @@
artifact.local.repository.dir = ${user.home}/.maven/repository
artifact.repository = http://www.ibiblio.org/maven
+
+artifact.remote.fail.on.error = true
+
+artifact.remote.host = minotaur.apache.org
+
+# artifact.remote.dir = /www/wwww.apache.org/dist/java-repository
+
+artifact.remote.dir = /home/niclas/dist
+
+artifact.remote.port =
+
+artifact.remote.username =
+
+artifact.remote.password =
+
+artifact.remote.keys.file =
+
+artifact.remote.passphrase =
+
+artifact.remote.trust = true
+
+artifact.remote.knownhosts.file =
+
Modified: avalon/trunk/tools/magic/jar/src/dist/magic.bsh
==============================================================================
--- avalon/trunk/tools/magic/jar/src/dist/magic.bsh (original)
+++ avalon/trunk/tools/magic/jar/src/dist/magic.bsh Thu Jun 3 10:27:17 2004
@@ -18,13 +18,15 @@
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
+import java.lang.reflect.InvocationTargetException;
import org.apache.avalon.magic.AbstractPlugin;
import org.apache.avalon.magic.Artifact;
-import org.apache.avalon.magic.Plugin;
+import org.apache.avalon.magic.ArtifactException;
import org.apache.avalon.magic.PluginContext;
+import org.apache.avalon.magic.Util;
+
+import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.service.ServiceManager;
@@ -37,13 +39,16 @@
import org.apache.tools.ant.taskdefs.Jar;
public class JarPlugin extends AbstractPlugin
- implements Serviceable
+ implements Serviceable, Initializable
{
- private Object m_JavaPlugin;
- private Object m_PreparePlugin;
- private Object m_ArtifactPlugin;
- private boolean m_Jarred = false;
-
+ private Object m_JavaPlugin;
+ private Object m_PreparePlugin;
+ private Object m_ArtifactPlugin;
+ private boolean m_Jarred = false;
+
+ private Artifact m_CurrentArtifact;
+ private File m_JarFile;
+
public void service( ServiceManager man )
throws ServiceException
{
@@ -52,21 +57,59 @@
m_ArtifactPlugin = man.lookup( "artifact" );
}
+ public void initialize()
+ throws IOException, ArtifactException
+ {
+ String projectname = m_Context.getProjectName();
+ ArtifactPlugin ap = (ArtifactPlugin) m_ArtifactPlugin;
+ m_CurrentArtifact = Artifact.resolve( m_Context, projectname );
+ }
+
public void jar()
- throws IOException
+ throws IOException, ArtifactException
{
- if( m_Jarred )
- return;
-
- JavacPlugin java = (JavacPlugin) m_JavaPlugin;
- java.compile();
-
- notifyPreMethod( "jar" );
- File manifest = prepareManifest();
- notifyStep( "jar", "manifest-created" );
- createJar( manifest );
- notifyPostMethod( "jar" );
- m_Jarred = true;
+ try
+ {
+ if( m_Jarred )
+ return;
+
+ JavacPlugin java = (JavacPlugin) m_JavaPlugin;
+ java.compile();
+
+ notifyPreMethod( "jar" );
+ File manifest = prepareManifest();
+ notifyStep( "jar", "manifest-created" );
+ createJar( manifest );
+ notifyPostMethod( "jar" );
+ m_Jarred = true;
+ } catch( Exception e )
+ {
+ e.printStackTrace();
+ throw new ArtifactException( "Unable to JAR.", e );
+ }
+ }
+
+ public void install()
+ throws IOException, ArtifactException
+ {
+ jar();
+ notifyPreMethod( "install" );
+ ArtifactPlugin artplugin = (ArtifactPlugin) m_ArtifactPlugin;
+ artplugin.install( m_CurrentArtifact, m_JarFile );
+ notifyStep( "install", "plugin-installed" );
+ Util.checksum( m_CurrentArtifact.toLocalFile() );
+ notifyStep( "install", "checksum-created" );
+ notifyPostMethod( "install" );
+ }
+
+ public void upload()
+ throws IOException, ArtifactException
+ {
+ install();
+ notifyPreMethod( "upload" );
+ ArtifactPlugin artplugin = (ArtifactPlugin) m_ArtifactPlugin;
+ artplugin.upload( m_CurrentArtifact );
+ notifyPostMethod( "upload" );
}
private File prepareManifest()
@@ -97,20 +140,16 @@
private void createJar( File manifest )
throws IOException
{
- String projectname = m_Context.getProjectName();
- ArtifactPlugin ap = (ArtifactPlugin) m_ArtifactPlugin;
- Artifact thisArtifact = ap.resolve( projectname );
-
String dest = m_Context.getProperty( "jar.build.dest.dir" );
File destDir = new File( dest );
- File jarFile = new File( dest, thisArtifact.getFilename() );
+ m_JarFile = new File( dest, m_CurrentArtifact.getFilename() );
destDir.mkdirs();
File fromDir = new File( m_Context.getProperty( "jar.build.src.dir" ) );
Jar jar = (Jar) m_Project.createTask( "jar" );
/* Set the destination */
- jar.setDestFile( jarFile );
+ jar.setDestFile( m_JarFile );
jar.setBasedir( fromDir );
jar.init();
Modified: avalon/trunk/tools/magic/java/src/dist/magic.bsh
==============================================================================
--- avalon/trunk/tools/magic/java/src/dist/magic.bsh (original)
+++ avalon/trunk/tools/magic/java/src/dist/magic.bsh Thu Jun 3 10:27:17 2004
@@ -18,12 +18,9 @@
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
import org.apache.avalon.magic.AbstractPlugin;
import org.apache.avalon.magic.Artifact;
-import org.apache.avalon.magic.Plugin;
+import org.apache.avalon.magic.ArtifactException;
import org.apache.avalon.magic.PluginContext;
import org.apache.avalon.framework.logger.Logger;
@@ -53,7 +50,7 @@
}
public void compile()
- throws IOException
+ throws IOException, ArtifactException
{
if( m_Compiled )
return;
@@ -67,7 +64,7 @@
}
private void executeCompile()
- throws IOException
+ throws IOException, ArtifactException
{
Logger logger = getLogger();
if( logger.isDebugEnabled() )
@@ -85,7 +82,7 @@
}
public void compile( String classpath, File destDir, File srcDir )
- throws IOException
+ throws IOException, ArtifactException
{
Javac javac = (Javac) m_Project.createTask( "javac" );
/* Set the destination */
@@ -100,8 +97,8 @@
ArtifactPlugin ap = (ArtifactPlugin) m_ArtifactPlugin;
String projectname = m_Context.getProjectName();
- Artifact thisArtifact = ap.resolve( projectname );
- Artifact[] deps = ap.getDependencies( thisArtifact );
+ Artifact thisArtifact = Artifact.resolve( m_Context, projectname );
+ Artifact[] deps = thisArtifact.getDependencies();
Path depPath = ap.getClassPath( deps );
cp.add( depPath );
Modified: avalon/trunk/tools/magic/magic.sequence
==============================================================================
--- avalon/trunk/tools/magic/magic.sequence (original)
+++ avalon/trunk/tools/magic/magic.sequence Thu Jun 3 10:27:17 2004
@@ -5,3 +5,4 @@
artifact plugin.install
java plugin.install
jar plugin.install
+# test plugin.install
Modified: avalon/trunk/tools/magic/prepare/src/dist/magic.bsh
==============================================================================
--- avalon/trunk/tools/magic/prepare/src/dist/magic.bsh (original)
+++ avalon/trunk/tools/magic/prepare/src/dist/magic.bsh Thu Jun 3 10:27:17 2004
@@ -90,6 +90,15 @@
copy.execute();
}
+ public void copyFile( File fromFile, File toFile )
+ {
+ Copy copy = (Copy) m_Project.createTask( "copy" );
+ copy.setTofile( toFile );
+ copy.setFile( fromFile );
+ copy.init();
+ copy.execute();
+ }
+
private void configureFilterSet( FilterSet fs )
{
fs.setBeginToken( "@" );
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org