org.codehaus.mojo.gwt.GwtResourcesBaseMojo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gwt-maven-plugin Show documentation
Show all versions of gwt-maven-plugin Show documentation
Maven plugin for the Google Web Toolkit.
package org.codehaus.mojo.gwt;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.MojoExecutionException;
import org.codehaus.mojo.gwt.utils.DefaultGwtModuleReader;
import org.codehaus.mojo.gwt.utils.GwtModuleReaderException;
import org.codehaus.plexus.util.DirectoryScanner;
import java.io.File;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
* Collect GWT java source code and module descriptor to be added as resources. Common
* functionality for different implementations GwtResourcesMojo and GwtSourcesJarMojo
*
* @author Nicolas De Loof
* @author Vlad Skarzhevskyy
*
*/
abstract class GwtResourcesBaseMojo
extends AbstractGwtModuleMojo
{
protected class ResourceFile
{
File basedir;
String fileRelativeName;
public ResourceFile( File basedir, String fileRelativeName )
{
super();
this.basedir = basedir;
this.fileRelativeName = fileRelativeName;
}
}
/**
* Collect GWT java source code and module descriptor to be added as resources.
*/
protected Collection getAllResourceFiles()
throws MojoExecutionException
{
try
{
Set sourcesAndResources = new HashSet();
Set sourcesAndResourcesPath = new HashSet();
sourcesAndResourcesPath.addAll( getProject().getCompileSourceRoots() );
for ( Resource resource : getProject().getResources() )
{
sourcesAndResourcesPath.add( resource.getDirectory() );
}
for ( String name : getModules() )
{
GwtModule module = readModule( name );
sourcesAndResources.add( getDescriptor( module, sourcesAndResourcesPath ) );
int count = 1;
for ( String source : module.getSources() )
{
getLog().debug( "GWT sources from " + name + '.' + source );
Collection files = getAsResources( module, source, sourcesAndResourcesPath,
"**/*.java" );
sourcesAndResources.addAll( files );
count += files.size();
Collection uifiles = getAsResources( module, source, sourcesAndResourcesPath,
"**/*.ui.xml" );
sourcesAndResources.addAll( uifiles );
count += uifiles.size();
}
for ( String source : module.getSuperSources() )
{
getLog().debug( "GWT super-sources from " + name + '.' + source );
Collection files = getAsResources( module, source, sourcesAndResourcesPath,
"**/*.java" );
sourcesAndResources.addAll( files );
count += files.size();
Collection uifiles = getAsResources( module, source, sourcesAndResourcesPath,
"**/*.ui.xml" );
sourcesAndResources.addAll( uifiles );
count += uifiles.size();
}
getLog().info( count + " source files from GWT module " + name );
}
return sourcesAndResources;
}
catch ( GwtModuleReaderException e )
{
throw new MojoExecutionException( e.getMessage(), e );
}
}
/**
* @param source
* @param include TODO
* @param name
*/
private Collection getAsResources( GwtModule module, String source, Set paths, String include )
{
String pattern = module.getPackage().replace( '.', '/' );
Set sourcesAndResources = new HashSet();
for ( String path : paths )
{
File basedir = new File( path );
// the default "src/main/resource" may not phisicaly exist in project
if ( !basedir.exists() )
{
continue;
}
DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir( basedir );
scanner.setIncludes( new String[] { pattern + '/' + source + '/' + include } );
scanner.scan();
String[] includedFiles = scanner.getIncludedFiles();
for ( String included : includedFiles )
{
sourcesAndResources.add( new ResourceFile( basedir, included ) );
}
}
return sourcesAndResources;
}
private ResourceFile getDescriptor( GwtModule module, Set paths )
throws MojoExecutionException
{
String moduleFilePath = module.getName().replace( '.', '/' ) + DefaultGwtModuleReader.GWT_MODULE_EXTENSION;
for ( String path : paths )
{
File basedir = new File( path );
File descriptor = new File( basedir, moduleFilePath );
if ( descriptor.exists() )
{
return new ResourceFile( basedir, moduleFilePath );
}
}
throw new MojoExecutionException( "Failed to retrieve GWT descriptor in project sources " + moduleFilePath );
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy