And that snippet is all I can copy and paste under OS license ;-)

2009/11/9 Stephen Connolly <stephen.alan.conno...@gmail.com>:
> In case you hadn't guessed, I have code for similar ... though it's
> not deploying rpms to an rpm repository, rather deploying a custom
> deployable to a propriatory server ;-)
>
> 2009/11/9 Dan Tran <dant...@gmail.com>:
>> Stephen, i just typed faster then you in 2 seconds :-)
>>
>> On Mon, Nov 9, 2009 at 12: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
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>> For additional commands, e-mail: users-h...@maven.apache.org
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to