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