import java.io.*;
import java.util.*;
import org.codehaus.plexus.util.*;

try
{
    File outputFolder = new File( basedir, "target" );

    File testFile = new File( outputFolder, "testfile");
    if ( !testFile.isFile() )
    {
        System.err.println( "Could not find generated file: " + testFile );
        return false;
    }

    File depFile = new File( outputFolder, "commons-io/commons-io/2.2/commons-io-2.2.jar");
    if ( !depFile.isFile() )
    {
        System.err.println( "Could not find copied dependency file: " + depFile );
        return false;
    }

}
catch( Throwable t )
{
    t.printStackTrace();
    return false;
}

return true;
