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.File; 019 import java.io.IOException; 020 import java.util.Arrays; 021 022 import org.apache.maven.shared.model.fileset.FileSet; 023 import org.apache.maven.wagon.Wagon; 024 import org.apache.maven.wagon.WagonException; 025 import org.codehaus.mojo.wagon.shared.WagonUpload; 026 import org.codehaus.plexus.util.StringUtils; 027 028 /** 029 * Upload multiple sets of files. 030 * 031 * @goal upload 032 * @requiresProject true 033 */ 034 public class UploadMojo extends AbstractSingleWagonMojo { 035 /** 036 * Local directory to upload to wagon's "url/toDir" 037 * 038 * @parameter expression="${wagon.fromDir}" default-value="${project.basedir}" 039 */ 040 private File fromDir; 041 042 /** 043 * Comma separate list of Ant's excludes to scan for local files 044 * 045 * @parameter expression="${wagon.excludes}" 046 * 047 */ 048 private String excludes; 049 050 /** 051 * Comma separate list of Ant's includes to scan for local files 052 * 053 * @parameter expression="${wagon.includes}" localDirectory's Ant includes 054 */ 055 private String includes; 056 057 /** 058 * Follow local symbolic link if possible 059 * 060 * @parameter expression="${wagon.followSymLink}" default-value="false" 061 */ 062 private boolean followSymLink = false; 063 064 /** 065 * Use default exclude sets 066 * 067 * @parameter expression="${wagon.useDefaultExcludes}" default-value="true" 068 */ 069 private boolean useDefaultExcludes = true; 070 071 /** 072 * Remote path relative to Wagon's url to upload local files to. 073 * 074 * @parameter expression="${wagon.toDir}" default-value=""; 075 */ 076 private String toDir = ""; 077 078 /** 079 * Optimize the upload by locally compressed all files in one bundle, upload the bundle, and finally remote 080 * uncompress the bundle. 081 * 082 * @parameter expression="${wagon.optimize}" default-value="false"; 083 */ 084 085 private boolean optimize = false; 086 087 /** 088 * @component 089 */ 090 protected WagonUpload wagonUpload; 091 092 @Override 093 protected void execute(Wagon wagon) throws WagonException, IOException { 094 FileSet fileSet = new FileSet(); 095 096 fileSet.setDirectory(this.fromDir.getAbsolutePath()); 097 098 if (!StringUtils.isBlank(includes)) { 099 fileSet.setIncludes(Arrays.asList(StringUtils.split(this.includes, ","))); 100 } 101 102 if (!StringUtils.isBlank(excludes)) { 103 fileSet.setExcludes(Arrays.asList(StringUtils.split(this.excludes, ","))); 104 } 105 106 fileSet.setFollowSymlinks(this.followSymLink); 107 108 fileSet.setUseDefaultExcludes(this.useDefaultExcludes); 109 110 fileSet.setOutputDirectory(toDir); 111 112 this.wagonUpload.upload(wagon, fileSet, optimize, this.getLog()); 113 } 114 115 }