001 package org.codehaus.mojo.wagon;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
005 * agreements. See the NOTICE file distributed with this work for additional information regarding
006 * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance with the License. You may obtain a
008 * copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software distributed under the License
013 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
014 * or implied. See the License for the specific language governing permissions and limitations under
015 * the License.
016 */
017
018 import java.io.IOException;
019
020 import org.apache.maven.plugin.MojoExecutionException;
021 import org.apache.maven.wagon.ConnectionException;
022 import org.apache.maven.wagon.Wagon;
023 import org.apache.maven.wagon.WagonException;
024
025 /**
026 * Provides base functionality for dealing with I/O using single wagon.
027 *
028 */
029 public abstract class AbstractSingleWagonMojo extends AbstractWagonMojo {
030
031 /**
032 * URL to upload to or download from or list. Must exist and point to a directory.
033 *
034 * @parameter expression="${wagon.url}"
035 * @required
036 */
037 private String url;
038
039 /**
040 * settings.xml's server id for the URL. This is used when wagon needs extra authentication information.
041 *
042 * @parameter expression="${wagon.serverId}" default-value="serverId";
043 */
044 private String serverId;
045
046 @Override
047 public void execute() throws MojoExecutionException {
048 if (this.skip) {
049 this.getLog().info("Skip execution.");
050 return;
051 }
052
053 Wagon wagon = null;
054 try {
055 wagon = createWagon(serverId, url);
056 execute(wagon);
057 } catch (WagonException e) {
058 throw new MojoExecutionException("Error handling resource", e);
059 } catch (IOException e) {
060 throw new MojoExecutionException("Error handling resource", e);
061 } finally {
062 disconnectQuietly(wagon);
063 }
064 }
065
066 protected void disconnectQuietly(Wagon wagon) {
067 if (wagon == null) {
068 return;
069 }
070 try {
071 wagon.disconnect();
072 } catch (ConnectionException e) {
073 getLog().debug("Error disconnecting wagon - ignored", e);
074 }
075 }
076
077 /**
078 * Perform the necessary action. To be implemented in the child mojo.
079 *
080 * @param wagon
081 * @throws MojoExecutionException
082 * @throws WagonException
083 */
084 protected abstract void execute(Wagon wagon) throws MojoExecutionException, WagonException, IOException;
085
086 }