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

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

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

    if ( !version.contains( "Apache Maven 3.0.2" ) )
    {
        System.err.println( "Expected Apache Maven 3.0.1. Got version: " + version );
        return false;
    }

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

return true;
