public void execute()

in nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/BrandingMojo.java [99:190]


    public void execute()
            throws MojoExecutionException
    {
        if ( !"nbm".equals( project.getPackaging() ) )
        {
            getLog().error(
                    "The nbm:branding goal shall be used within a NetBeans module project only (packaging 'nbm')" );
        }
        if ( !brandingSources.isDirectory() )
        {
            getLog().info( "No branding to process." );
            return;
        }
        if ( brandingToken == null )
        {
            throw new MojoExecutionException( "brandingToken must be defined for mojo:branding" );
        }
        try
        {

            DirectoryScanner scanner = new DirectoryScanner();
            scanner.setIncludes( new String[]
            {
                "**/*.*"
            } );
            scanner.addDefaultExcludes();
            scanner.setBasedir( brandingSources );
            scanner.scan();

            final String clusterPathPart = "clusters" + File.separator + cluster;
            File outputDir = new File( outputDirectory, "branding_and_locales" );
            outputDir.mkdirs();
            File clusterDir = new File( nbmBuildDir, clusterPathPart );
            clusterDir.mkdirs();

            // copy all files and see to it that they get the correct names
            for ( String brandingFilePath : scanner.getIncludedFiles() )
            {
                File brandingFile = new File( brandingSources, brandingFilePath );
                String[] locale = getLocale( brandingFile.getName() );
                String token = locale[1] == null ? brandingToken : brandingToken + "_" + locale[1];
                File root = new File( outputDir, token );
                root.mkdirs();
                String destinationName = locale[0] + "_" + token + locale[2];
                File brandingDestination = new File( root, brandingFilePath.replace( brandingFile.getName(),
                        destinationName ) );
                if ( !brandingDestination.getParentFile().exists() )
                {
                    brandingDestination.getParentFile().mkdirs();
                }
                FileUtils.copyFile( brandingFile, brandingDestination );
            }
            for ( File rootDir : outputDir.listFiles() )
            {
                if ( !rootDir.isDirectory() )
                {
                    continue;
                }
                String effectiveBranding = rootDir.getName();
                // create jar-files from each toplevel .jar directory
                scanner.setIncludes( new String[]
                {
                    "**/*.jar"
                } );
                scanner.setBasedir( rootDir );
                scanner.scan();
                for ( String jarDirectoryPath : scanner.getIncludedDirectories() )
                {
                    // move nnn.jar directory to nnn.jar.tmp
                    File jarDirectory = new File( rootDir, jarDirectoryPath );
                    File destinationLocation = new File( clusterDir, jarDirectoryPath ).getParentFile();
                    destinationLocation.mkdirs();
                    // jars should be placed in locales/ under the same directory the jar-directories are
                    File destinationJar
                            = new File( destinationLocation + File.separator + "locale"
                                    + File.separator
                                    + destinationFileName( jarDirectory.getName(), effectiveBranding ) );

                    // create nnn.jar archive of contents
                    JarArchiver archiver = new JarArchiver();
                    archiver.setDestFile( destinationJar );
                    archiver.addDirectory( jarDirectory );
                    archiver.createArchive();
                }
            }

        }
        catch ( Exception ex )
        {
            throw new MojoExecutionException( "Error creating branding", ex );
        }
    }