package plugin;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed 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 java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.maven.model.Build;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
/**
* @goal check
*/
public class MyMojo
extends AbstractMojo
{
/**
* @parameter default-value="${project.build}"
* @required
* @readonly
*/
private Build build;
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
private MavenProject project;
public void execute()
throws MojoExecutionException
{
Build projectBuild = project.getBuild();
Map failedComparisons = new HashMap();
check( "project.build.directory", projectBuild.getDirectory(), build.getDirectory(), failedComparisons );
check( "project.build.outputDirectory", projectBuild.getOutputDirectory(), build.getOutputDirectory(),
failedComparisons );
check( "project.build.sourceDirectory", projectBuild.getSourceDirectory(), build.getSourceDirectory(),
failedComparisons );
check( "project.build.testSourceDirectory", projectBuild.getTestSourceDirectory(),
build.getTestSourceDirectory(), failedComparisons );
check( "project.build.scriptSourceDirectory", projectBuild.getScriptSourceDirectory(),
build.getScriptSourceDirectory(), failedComparisons );
List projectResources = projectBuild.getResources();
List buildResources = build.getResources();
if ( projectResources != null )
{
for ( int i = 0; i < projectResources.size(); i++ )
{
Resource projectRes = (Resource) projectResources.get( i );
Resource buildRes = (Resource) buildResources.get( i );
check( "project.build.resources[" + i + "].directory", projectRes.getDirectory(),
buildRes.getDirectory(), failedComparisons );
check( "project.build.resources[" + i + "].targetPath", projectRes.getTargetPath(),
buildRes.getTargetPath(), failedComparisons );
}
}
if ( !failedComparisons.isEmpty() )
{
StringBuffer buffer = new StringBuffer();
buffer.append( "One or more build-section values were not interpolated correctly"
+ "\nbefore the build instance was injected as a plugin parameter:\n" );
for ( Iterator it = failedComparisons.entrySet().iterator(); it.hasNext(); )
{
Map.Entry entry = (Map.Entry) it.next();
String key = (String) entry.getKey();
String[] value = (String[]) entry.getValue();
buffer.append( "\n- " ).append( key );
buffer.append( "\n\tShould be: \'" ).append( value[0] );
buffer.append( "\'\n\t Was: \'" ).append( value[1] ).append( "\'\n" );
}
throw new MojoExecutionException( buffer.toString() );
}
}
private void check( String description, String projectValue, String buildValue, Map failedComparisons )
{
if ( projectValue == null && buildValue != null )
{
failedComparisons.put( description, new String[] { projectValue, buildValue } );
}
else if ( projectValue != null && !projectValue.equals( buildValue ) )
{
failedComparisons.put( description, new String[] { projectValue, buildValue } );
}
}
}