src/main/java/com/simpligility/maven/plugins/android/phase01generatesources/GenerateSourcesMojo.java
private void checkForConflictingLayouts() throws MojoExecutionException
    {
        final ConflictingLayoutDetector detector = new ConflictingLayoutDetector();

        // Add layout files for this project
        final FileRetriever retriever = new FileRetriever( "layout*/*.xml" );
        detector.addLayoutFiles( getAndroidManifestPackageName(), retriever.getFileNames( resourceDirectory ) );

        // Add layout files for all dependencies.
        for ( final Artifact dependency : getTransitiveDependencyArtifacts( AAR, APKLIB ) )
        {
            final String packageName = extractPackageNameFromAndroidArtifact( dependency );
            final String[] layoutFiles = retriever.getFileNames( getUnpackedLibResourceFolder( dependency ) );
            detector.addLayoutFiles( packageName, layoutFiles );
        }

        final Collection<ConflictingLayout> conflictingLayouts = detector.getConflictingLayouts();
        getLog().debug( "checkConflictingLayouts - conflicts : " + conflictingLayouts );
        if ( !conflictingLayouts.isEmpty() )
        {
            final List<String> sb = new ArrayList<String>();
            sb.add( "" );
            sb.add( "" );
            sb.add( "Duplicate layout files have been detected across more than one Android package." );
            sb.add( "" );
            sb.add( "Such a scenario generally means that the build will fail with a compilation error due to" );
            sb.add( "missing resource files. You should consider renaming some of the layout files listed below" );
            sb.add( "to avoid the conflict." );
            sb.add( "" );
            sb.add( "However, if you believe you know better, then you can downgrade the failure to a warning" );
            sb.add( "by setting the failOnConflictingLayouts plugin property to false." );
            sb.add( "But you really don't want to do that." );
            sb.add( "" );
            sb.add( "Conflicting Layouts:" );
            for ( final ConflictingLayout layout : conflictingLayouts )
            {
                sb.add( "    " + layout.getLayoutFileName() + "  packages=" + layout.getPackageNames().toString() );
            }
            sb.add( "" );

            if ( failOnConflictingLayouts )
            {
                final StringBuilder builder = new StringBuilder();
                for ( final String line : sb )
                {
                    builder.append( line );
                    builder.append( "\n" );
                }
                throw new MojoExecutionException( builder.toString() );
            }

            for ( final String line : sb )
            {
                getLog().warn( line );
            }
        }
    }
private void checkForConflictingLayouts() throws MojoExecutionException
    {
        final ConflictingLayoutDetector detector = new ConflictingLayoutDetector();

        // Add layout files for this project
        final FileRetriever retriever = new FileRetriever( "layout*/*.xml" );
        detector.addLayoutFiles( getAndroidManifestPackageName(), retriever.getFileNames( resourceDirectory ) );

        // Add layout files for all dependencies.
        for ( final Artifact dependency : getTransitiveDependencyArtifacts( AAR, APKLIB ) )
        {
            final String packageName = extractPackageNameFromAndroidArtifact( dependency );
            final String[] layoutFiles = retriever.getFileNames( getUnpackedLibResourceFolder( dependency ) );
            detector.addLayoutFiles( packageName, layoutFiles );
        }

        final Collection<ConflictingLayout> conflictingLayouts = detector.getConflictingLayouts();
        getLog().debug( "checkConflictingLayouts - conflicts : " + conflictingLayouts );
        if ( !conflictingLayouts.isEmpty() )
        {
            final List<String> sb = new ArrayList<String>();
            sb.add( "" );
            sb.add( "" );
            sb.add( "Duplicate layout files have been detected across more than one Android package." );
            sb.add( "" );
            sb.add( "Such a scenario generally means that the build will fail with a compilation error due to" );
            sb.add( "missing resource files. You should consider renaming some of the layout files listed below" );
            sb.add( "to avoid the conflict." );
            sb.add( "" );
            sb.add( "However, if you believe you know better, then you can downgrade the failure to a warning" );
            sb.add( "by setting the failOnConflictingLayouts plugin property to false." );
            sb.add( "But you really don't want to do that." );
            sb.add( "" );
            sb.add( "Conflicting Layouts:" );
            for ( final ConflictingLayout layout : conflictingLayouts )
            {
                sb.add( "    " + layout.getLayoutFileName() + "  packages=" + layout.getPackageNames().toString() );
            }
            sb.add( "" );

            if ( failOnConflictingLayouts )
            {
                final StringBuilder builder = new StringBuilder();
                for ( final String line : sb )
                {
                    builder.append( line );
                    builder.append( "\n" );
                }
                throw new MojoExecutionException( builder.toString() );
            }

            for ( final String line : sb )
            {
                getLog().warn( line );
            }
        }
    }
private void checkForConflictingLayouts ( ) throws MojoExecutionException { final ConflictingLayoutDetector detector = new ConflictingLayoutDetector ( ) ; // Add layout files for this project final FileRetriever retriever = new FileRetriever ( "layout*/*.xml" ) ; detector . addLayoutFiles ( getAndroidManifestPackageName ( ) , retriever . getFileNames ( resourceDirectory ) ) ; // Add layout files for all dependencies. for ( final Artifact dependency : getTransitiveDependencyArtifacts ( AAR , APKLIB ) ) { final String packageName = extractPackageNameFromAndroidArtifact ( dependency ) ; final String [ ] layoutFiles = retriever . getFileNames ( getUnpackedLibResourceFolder ( dependency ) ) ; detector . addLayoutFiles ( packageName , layoutFiles ) ; } final Collection < ConflictingLayout > conflictingLayouts = detector . getConflictingLayouts ( ) ; getLog ( ) . debug ( "checkConflictingLayouts - conflicts : " + conflictingLayouts ) ; if ( ! conflictingLayouts . isEmpty ( ) ) { final List < String > sb = new ArrayList < String > ( ) ; sb . add ( "" ) ; sb . add ( "" ) ; sb . add ( "Duplicate layout files have been detected across more than one Android package." ) ; sb . add ( "" ) ; sb . add ( "Such a scenario generally means that the build will fail with a compilation error due to" ) ; sb . add ( "missing resource files. You should consider renaming some of the layout files listed below" ) ; sb . add ( "to avoid the conflict." ) ; sb . add ( "" ) ; sb . add ( "However, if you believe you know better, then you can downgrade the failure to a warning" ) ; sb . add ( "by setting the failOnConflictingLayouts plugin property to false." ) ; sb . add ( "But you really don't want to do that." ) ; sb . add ( "" ) ; sb . add ( "Conflicting Layouts:" ) ; for ( final ConflictingLayout layout : conflictingLayouts ) { sb . add ( "    " + layout . getLayoutFileName ( ) + "  packages=" + layout . getPackageNames ( ) . toString ( ) ) ; } sb . add ( "" ) ; if ( failOnConflictingLayouts ) { final StringBuilder builder = new StringBuilder ( ) ; for ( final String line : sb ) { builder . append ( line ) ; builder . append ( "\n" ) ; } throw new MojoExecutionException ( builder . toString ( ) ) ; } for ( final String line : sb ) { getLog ( ) . warn ( line ) ; } } }
Looks for dependencies that have a layout file with the same name as either one of the project layout files
or one of the other dependencies. If such a duplicate occurs then it will fail the build or generate a warning
depending upon the value of the <strong>failOnConflictingLayouts</strong> build parameter.

@throws MojoExecutionException
Looks for dependencies that have a layout file with the same name as either one of the project layout files or one of the other dependencies . If such a duplicate occurs then it will fail the build or generate a warning depending upon the value of the <strong > failOnConflictingLayouts< / strong > build parameter .