1 package com.codehaus.mojo.vfs;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.vfs2.FileObject;
23 import org.apache.commons.vfs2.FileSystemException;
24 import org.apache.commons.vfs2.FileSystemOptions;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.plugins.annotations.Mojo;
28 import org.codehaus.mojo.vfs.VfsFileSet;
29 import org.codehaus.mojo.vfs.VfsFileSetManager;
30 import org.codehaus.mojo.vfs.internal.DefaultVfsFileSetManager;
31 import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
32
33
34
35
36 @Mojo( name = "copy", requiresProject = true, threadSafe = true )
37 public class CopyVfsMojo
38 extends AbstractVfsActionMojo
39 {
40 public void execute()
41 throws MojoExecutionException, MojoFailureException
42 {
43 if ( !this.initialize() )
44 {
45 return;
46 }
47
48 for ( MojoVfsFileSet fileset : filesets )
49 {
50 try
51 {
52 FileSystemOptions sourceOpts = this.getFileSystemOptions( fileset.getSourceId(), fileset.getSource() );
53 FileSystemOptions destOpts =
54 this.getFileSystemOptions( fileset.getDestinationId(), fileset.getDestination() );
55
56 VfsFileSet vfsFileSet = new VfsFileSet();
57 vfsFileSet.copyBase( fileset );
58
59 FileObject sourceObj = getFileSystemManager().resolveFile( fileset.getSource(), sourceOpts );
60 vfsFileSet.setSource( sourceObj );
61
62 FileObject destObj = getFileSystemManager().resolveFile( fileset.getDestination(), destOpts );
63 vfsFileSet.setDestination( destObj );
64
65 VfsFileSetManager fileSetManager = new DefaultVfsFileSetManager();
66 fileSetManager.copy( vfsFileSet );
67 }
68 catch ( FileSystemException e )
69 {
70 throw new MojoFailureException( "Unable to perform a copy operation", e );
71 }
72 catch ( SecDispatcherException e )
73 {
74 throw new MojoFailureException( "Unable to perform a copy operation", e );
75 }
76 }
77
78 }
79 }