src/main/java/com/simpligility/maven/plugins/android/phase01generatesources/GenerateSourcesMojo.java
private void validateStandardLocations() throws MojoExecutionException
    {
        boolean hasNonStandardStructure = false;
        if ( androidManifestFilePre4.exists() && !androidManifestFilePre4.equals( androidManifestFile ) )
        {
            getLog().warn( "Non-standard location of AndroidManifest.xml file found, but not configured:\n "
                    + androidManifestFilePre4 + "\nMove to the standard location src/main/AndroidManifest.xml\n"
                    + "Or configure androidManifestFile. \n" );
            hasNonStandardStructure = true;
        }
        if ( resourceDirectoryPre4.exists() && !resourceDirectoryPre4.equals( resourceDirectory ) )
        {
            getLog().warn( "Non-standard location of Android res folder found, but not configured:\n "
                    + resourceDirectoryPre4 + "\nMove to the standard location src/main/res/\n"
                    + "Or configure resourceDirectory. \n" );
            hasNonStandardStructure = true;
        }
        if ( assetsDirectoryPre4.exists() && !assetsDirectoryPre4.equals( assetsDirectory ) )
        {
            getLog().warn( "Non-standard location assets folder found, but not configured:\n "
                    + assetsDirectoryPre4 + "\nMove to the standard location src/main/assets/\n"
                    + "Or configure assetsDirectory. \n" );
            hasNonStandardStructure = true;
        }
        if ( nativeLibrariesDirectoryPre4.exists() && !nativeLibrariesDirectoryPre4.equals( nativeLibrariesDirectory ) )
        {
            getLog().warn( "Non-standard location native libs folder found, but not configured:\n "
                    + nativeLibrariesDirectoryPre4 + "\nMove to the standard location src/main/libs/\n"
                    + "Or configure nativeLibrariesDirectory. \n" );
            hasNonStandardStructure = true;
        }

        if ( hasNonStandardStructure && failOnNonStandardStructure )
        {
            throw new MojoExecutionException(
                    "\n\nFound files or folders in non-standard locations in the project!\n"
                            + "....This might be a side-effect of a migration to Android Maven Plugin 4+.\n"
                            + "....Please observe the warnings for specific files and folders above.\n"
                            + "....Ideally you should restructure your project.\n"
                            + "....Alternatively add explicit configuration overrides for files or folders.\n"
                            + "....Finally you could set failOnNonStandardStructure to false, potentially "
                            + "resulting in other failures.\n\n\n"
            );
        }
    }
private void validateStandardLocations() throws MojoExecutionException
    {
        boolean hasNonStandardStructure = false;
        if ( androidManifestFilePre4.exists() && !androidManifestFilePre4.equals( androidManifestFile ) )
        {
            getLog().warn( "Non-standard location of AndroidManifest.xml file found, but not configured:\n "
                    + androidManifestFilePre4 + "\nMove to the standard location src/main/AndroidManifest.xml\n"
                    + "Or configure androidManifestFile. \n" );
            hasNonStandardStructure = true;
        }
        if ( resourceDirectoryPre4.exists() && !resourceDirectoryPre4.equals( resourceDirectory ) )
        {
            getLog().warn( "Non-standard location of Android res folder found, but not configured:\n "
                    + resourceDirectoryPre4 + "\nMove to the standard location src/main/res/\n"
                    + "Or configure resourceDirectory. \n" );
            hasNonStandardStructure = true;
        }
        if ( assetsDirectoryPre4.exists() && !assetsDirectoryPre4.equals( assetsDirectory ) )
        {
            getLog().warn( "Non-standard location assets folder found, but not configured:\n "
                    + assetsDirectoryPre4 + "\nMove to the standard location src/main/assets/\n"
                    + "Or configure assetsDirectory. \n" );
            hasNonStandardStructure = true;
        }
        if ( nativeLibrariesDirectoryPre4.exists() && !nativeLibrariesDirectoryPre4.equals( nativeLibrariesDirectory ) )
        {
            getLog().warn( "Non-standard location native libs folder found, but not configured:\n "
                    + nativeLibrariesDirectoryPre4 + "\nMove to the standard location src/main/libs/\n"
                    + "Or configure nativeLibrariesDirectory. \n" );
            hasNonStandardStructure = true;
        }

        if ( hasNonStandardStructure && failOnNonStandardStructure )
        {
            throw new MojoExecutionException(
                    "\n\nFound files or folders in non-standard locations in the project!\n"
                            + "....This might be a side-effect of a migration to Android Maven Plugin 4+.\n"
                            + "....Please observe the warnings for specific files and folders above.\n"
                            + "....Ideally you should restructure your project.\n"
                            + "....Alternatively add explicit configuration overrides for files or folders.\n"
                            + "....Finally you could set failOnNonStandardStructure to false, potentially "
                            + "resulting in other failures.\n\n\n"
            );
        }
    }
Performs some level of validation on the configured files and folders in light of the change
to AndroidStudio/Gradle style folder structures instead of the original Ant/Eclipse structures.
<p>
Essentially we will be noisy if we see an artifact that looks like before
Android Maven Plugin 4 and is not explicitly configured.