org.codehaus.mojo.wagon.shared.DefaultWagonCopy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wagon-maven-plugin Show documentation
Show all versions of wagon-maven-plugin Show documentation
Maven plugin that can be used to access various operations on a given URL using a supported maven wagon. Supports
recursive upload, download, and list directory content functionality.
The newest version!
package org.codehaus.mojo.wagon.shared;
/*
* 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 java.io.File;
import java.io.IOException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.shared.model.fileset.FileSet;
import org.apache.maven.wagon.Wagon;
import org.apache.maven.wagon.WagonException;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.FileUtils;
/**
* Copy a set of file from a wagon repo to another wagon repo.
*/
@Component(role = WagonCopy.class, hint = "default")
public class DefaultWagonCopy
implements WagonCopy
{
@Requirement
private WagonDownload downloader;
@Requirement
private WagonUpload uploader;
@Override
public void copy( Wagon src, WagonFileSet wagonFileSet, Wagon target, boolean optimize, Log logger )
throws WagonException, IOException
{
if ( wagonFileSet == null )
{
wagonFileSet = new WagonFileSet();
}
boolean removeDownloadDir = false;
if ( wagonFileSet.getDownloadDirectory() == null )
{
File downloadSrcDir = File.createTempFile( "wagon", "wagon" );
downloadSrcDir.delete();
wagonFileSet.setDownloadDirectory( downloadSrcDir );
removeDownloadDir = true;
}
try
{
this.downloader.download( src, wagonFileSet, logger );
FileSet localFileSet = new FileSet();
localFileSet.setDirectory( wagonFileSet.getDownloadDirectory().getAbsolutePath() );
localFileSet.setOutputDirectory( wagonFileSet.getOutputDirectory() );
this.uploader.upload( target, localFileSet, optimize, logger );
}
finally
{
if ( removeDownloadDir )
{
FileUtils.deleteDirectory( wagonFileSet.getDownloadDirectory() );
}
}
}
}