import java.io.*;
import java.net.*;
import java.util.jar.*;

boolean result = true;

try
{
    System.out.println( "Creating JarFile java.io.File." );
    
    File jarFile = new File( basedir, "target/jar-with-dependencies-no-target-dir-1.0-SNAPSHOT-jar-with-dependencies.jar" );
    
    System.out.println( "Checking for existence and file-ishness of: " + jarFile );
    
    if ( !jarFile.exists() || jarFile.isDirectory() )
    {
        System.err.println( "jar file is missing or a directory." );
        return false;
    }
    
    System.out.println( "Creating JarFile instance." );
    
    JarFile jf = new JarFile( jarFile );
    
    if ( jf.getEntry( "test/App.class" ) == null )
    {
        System.err.println( "App class is missing." );
        result = false;
    }
    
    System.out.println( "Looking for absence of 'target/classes/test/App.class' jar entry." );
    
    if ( jf.getEntry( "target/classes/test/App.class" ) != null )
    {
        System.err.println( "target directory should not be present." );
        result = false;
    }
    
}
catch( IOException e )
{
    e.printStackTrace();
    result = false;
}

return result;
