Thanks for the detailed answer!

i'll look into it and let you know the progress.

Cheers,

Eyal.

On Mon, Nov 9, 2009 at 10:59 AM, Stephen Connolly <
stephen.alan.conno...@gmail.com> wrote:

> It is not that difficult to write your own maven plugin to achieve this.
>
> You'll probably want to depend on JSch.
>
> File transfer via SCP/SFTP is easy with JSch, and then you can execute
> the "make" command to re-index the repository... although you probably
> would prefer to skip the "make" and instead invoke "createrepo"
> directly...
>
> -Stephen
>
> P.S.
> You'll probably need something like the following dependencies:
>    <dependency>
>      <groupId>org.apache.maven</groupId>
>      <artifactId>maven-project</artifactId>
>      <version>2.0.6</version>
>    </dependency>
>
>    <dependency>
>      <groupId>org.apache.maven</groupId>
>      <artifactId>maven-plugin-api</artifactId>
>      <version>2.0.6</version>
>    </dependency>
>
>    <dependency>
>      <groupId>org.codehaus.plexus</groupId>
>      <artifactId>plexus-utils</artifactId>
>      <version>1.5.1</version>
>    </dependency>
>
>    <dependency>
>      <groupId>com.jcraft</groupId>
>      <artifactId>jsch</artifactId>
>      <version>0.1.42</version>
>    </dependency>
>
> As well as these two functions (or equivalent):
>
>    /*
>     * Licensed to the Apache Software Foundation (ASF) under one
>     * or more contributor license agreements.  See the NOTICE file
>     * distributed with this work for additional information
>     * regarding copyright ownership.  The ASF licenses this file
>     * to you under the Apache License, Version 2.0 (the
>     * "License"); you may not use this file except in compliance
>     * with the License.  You may obtain a copy of the License at
>     *
>     *     http://www.apache.org/licenses/LICENSE-2.0
>     *
>     * Unless required by applicable law or agreed to in writing,
>     * software distributed under the License is distributed on an
>     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>     * KIND, either express or implied.  See the License for the
>     * specific language governing permissions and limitations
>     * under the License.
>     */
>    import com.jcraft.jsch.ChannelExec;
>    import com.jcraft.jsch.ChannelSftp;
>    import com.jcraft.jsch.JSchException;
>    import com.jcraft.jsch.Session;
>    import com.jcraft.jsch.SftpException;
>    import org.apache.maven.plugin.logging.Log;
>    import org.codehaus.plexus.util.IOUtil;
>    import org.codehaus.plexus.util.StringUtils;
>
>    public static void put( Session session, File source, String
> destination, int mode, final Log log )
>        throws JSchException, SftpException
>    {
>        ChannelSftp channel = null;
>        try
>        {
>            channel = (ChannelSftp) session.openChannel( "sftp" );
>            channel.connect();
>            log.info( "Uploading " + source + " to sftp://"; +
> session.getUserName() + "@" + session.getHost() + ":"
>                + session.getPort() + destination );
>            channel.put( source.getAbsolutePath(), destination, mode );
>            channel.quit();
>        }
>        finally
>        {
>            if ( channel != null )
>            {
>                channel.disconnect();
>            }
>        }
>    }
>
>    public static void createrepo( Session session, String workingDir )
>        throws JSchException, IOException, InterruptedException
>    {
>        GobblingInputStream stdout = null;
>        GobblingInputStream stderr = null;
>        ChannelExec channel = null;
>        try
>        {
>            channel = (ChannelExec) session.openChannel( "exec" );
>            channel.setCommand( "ch " + workingDir + " && createrepo" );
>            stdout = new GobblingInputStream( channel.getInputStream() );
>            stderr = new GobblingInputStream( channel.getErrStream() );
>            channel.setInputStream( null );
>            channel.connect();
>            stdout.awaitClosed();
>            stderr.awaitClosed();
>            while ( !channel.isClosed() )
>            {
>                Thread.sleep( 50 );
>            }
>            if ( channel.getExitStatus() != 0 )
>            {
>                throw new IOException(
>                    "Could not update yum repository
> metadata\nSTDOUT:\n" + IOUtil.toString( stdout ) + "\nSTDERR:\n"
>                        + IOUtil.toString( stderr ) + "\nEXIT-CODE:" +
> channel.getExitStatus() );
>            }
>        }
>        finally
>        {
>            if ( channel != null )
>            {
>                channel.disconnect();
>            }
>            IOUtil.close( stdout );
>            IOUtil.close( stderr );
>        }
>    }
>
> When you're done, give it back to the community, e.g. donate your
> plugin to mojo or some other maven plugin project hosting
>
> 2009/11/6 eyal edri <eyal.e...@gmail.com>:
> > Hi guys,
> >
> > i'm just starting to play around with maven as a candidate for our whole
> > build/deploy system for java applications.
> >
> > we're been programming so far using Perl,  packaging with Rpm on Fedora
> and
> > Deploying it though a local yum repository.
> >
> >
> > We still haven't decided if we could ditch the yum/rpm idea all together
> and
> > swith to mvn repository,
> > but in case we won't,
> >
> > Do you know* i**f there is a way to config mvn to upload the rpm (using
> > SCP?) to the yum repository* after
> > it finished building the RPM (today we use a build system based on make
> > files and in the end it scp's the rpm to the repository and run make
> there
> > to update the list of rpms).
> >
> > thank you.
> >
> > --
> > Eyal Edri
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>
>


-- 
Eyal Edri

Reply via email to