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