mirror of https://github.com/apache/maven.git
o Added duplicate check for mojo descriptor Parameters
o changed the exception(s) throws during mojo descriptor extraction to be derivatives of InvalidPluginDescriptorException o changed PluginConfigurationException in plugin.descriptor to InvalidPluginDescriptorException o changed all "true".equals(something) to Boolean.valueOf(something).booleanValue() o added validation of 'modelVersion' back to [Default]ModelValidator o Fixed/added tests for new 'modelVersion' validation o changed all requiresXXX in MojoDescriptor to XXXRequired, and getRequiresXXX():boolean to isXXXRequired():boolean to help maintain bean-ness for future use git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@168630 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d4c059226c
commit
76c4ceda28
|
@ -268,7 +268,7 @@ public class DefaultLifecycleExecutor
|
||||||
private void configureMojoPhaseBinding( MojoDescriptor mojoDescriptor, Map phaseMap, Settings settings )
|
private void configureMojoPhaseBinding( MojoDescriptor mojoDescriptor, Map phaseMap, Settings settings )
|
||||||
throws LifecycleExecutionException
|
throws LifecycleExecutionException
|
||||||
{
|
{
|
||||||
if ( settings.getActiveProfile().isOffline() && mojoDescriptor.requiresOnline() )
|
if ( settings.getActiveProfile().isOffline() && mojoDescriptor.isOnlineRequired() )
|
||||||
{
|
{
|
||||||
String goal = mojoDescriptor.getGoal();
|
String goal = mojoDescriptor.getGoal();
|
||||||
getLogger().warn( goal + " requires online mode, but maven is currently offline. Disabling " + goal + "." );
|
getLogger().warn( goal + " requires online mode, but maven is currently offline. Disabling " + goal + "." );
|
||||||
|
|
|
@ -307,7 +307,7 @@ public class DefaultPluginManager
|
||||||
public void executeMojo( MavenSession session, MojoDescriptor mojoDescriptor )
|
public void executeMojo( MavenSession session, MojoDescriptor mojoDescriptor )
|
||||||
throws ArtifactResolutionException, PluginManagerException, MojoExecutionException
|
throws ArtifactResolutionException, PluginManagerException, MojoExecutionException
|
||||||
{
|
{
|
||||||
if ( mojoDescriptor.getRequiresDependencyResolution() != null )
|
if ( mojoDescriptor.isDependencyResolutionRequired() != null )
|
||||||
{
|
{
|
||||||
|
|
||||||
ArtifactResolver artifactResolver = null;
|
ArtifactResolver artifactResolver = null;
|
||||||
|
@ -319,7 +319,7 @@ public class DefaultPluginManager
|
||||||
mavenProjectBuilder = (MavenProjectBuilder) container.lookup( MavenProjectBuilder.ROLE );
|
mavenProjectBuilder = (MavenProjectBuilder) container.lookup( MavenProjectBuilder.ROLE );
|
||||||
|
|
||||||
resolveTransitiveDependencies( session, artifactResolver, mavenProjectBuilder,
|
resolveTransitiveDependencies( session, artifactResolver, mavenProjectBuilder,
|
||||||
mojoDescriptor.getRequiresDependencyResolution() );
|
mojoDescriptor.isDependencyResolutionRequired() );
|
||||||
downloadDependencies( session, artifactResolver );
|
downloadDependencies( session, artifactResolver );
|
||||||
}
|
}
|
||||||
catch ( ComponentLookupException e )
|
catch ( ComponentLookupException e )
|
||||||
|
|
|
@ -17,7 +17,7 @@ package org.apache.maven.plugin.descriptor;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class DuplicateMojoDescriptorException
|
public class DuplicateMojoDescriptorException
|
||||||
extends PluginConfigurationException
|
extends InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
|
|
||||||
public DuplicateMojoDescriptorException( String goalPrefix, String goal, String existingImplementation, String newImplementation )
|
public DuplicateMojoDescriptorException( String goalPrefix, String goal, String existingImplementation, String newImplementation )
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.apache.maven.plugin.descriptor;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class DuplicateParameterException
|
||||||
|
extends InvalidPluginDescriptorException
|
||||||
|
{
|
||||||
|
|
||||||
|
public DuplicateParameterException( String message )
|
||||||
|
{
|
||||||
|
super( message );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
package org.apache.maven.tools.plugin.extractor;
|
package org.apache.maven.plugin.descriptor;
|
||||||
|
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2001-2004 The Apache Software Foundation.
|
* Copyright 2001-2004 The Apache Software Foundation.
|
||||||
|
@ -24,7 +22,7 @@ import org.apache.maven.tools.plugin.PluginToolsException;
|
||||||
* jdcasey Exp $
|
* jdcasey Exp $
|
||||||
*/
|
*/
|
||||||
public class InvalidParameterException
|
public class InvalidParameterException
|
||||||
extends PluginToolsException
|
extends InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
public InvalidParameterException( String element, int i )
|
public InvalidParameterException( String element, int i )
|
||||||
{
|
{
|
|
@ -18,16 +18,16 @@ import org.codehaus.plexus.configuration.PlexusConfigurationException;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class PluginConfigurationException
|
public class InvalidPluginDescriptorException
|
||||||
extends PlexusConfigurationException
|
extends PlexusConfigurationException
|
||||||
{
|
{
|
||||||
|
|
||||||
public PluginConfigurationException( String message, Throwable cause )
|
public InvalidPluginDescriptorException( String message, Throwable cause )
|
||||||
{
|
{
|
||||||
super( message, cause );
|
super( message, cause );
|
||||||
}
|
}
|
||||||
|
|
||||||
public PluginConfigurationException( String message )
|
public InvalidPluginDescriptorException( String message )
|
||||||
{
|
{
|
||||||
super( message );
|
super( message );
|
||||||
}
|
}
|
|
@ -23,6 +23,7 @@ import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -64,11 +65,11 @@ public class MojoDescriptor
|
||||||
//
|
//
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
private String requiresDependencyResolution = null;
|
private String dependencyResolutionRequired = null;
|
||||||
|
|
||||||
private boolean requiresProject = true;
|
private boolean projectRequired = true;
|
||||||
|
|
||||||
private boolean requiresOnline = false;
|
private boolean onlineRequired = false;
|
||||||
|
|
||||||
private PlexusConfiguration mojoConfiguration;
|
private PlexusConfiguration mojoConfiguration;
|
||||||
|
|
||||||
|
@ -110,8 +111,33 @@ public class MojoDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setParameters( List parameters )
|
public void setParameters( List parameters )
|
||||||
|
throws DuplicateParameterException
|
||||||
{
|
{
|
||||||
this.parameters = parameters;
|
for ( Iterator it = parameters.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
Parameter parameter = (Parameter) it.next();
|
||||||
|
addParameter( parameter );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addParameter( Parameter parameter )
|
||||||
|
throws DuplicateParameterException
|
||||||
|
{
|
||||||
|
if ( parameters != null && parameters.contains( parameter ) )
|
||||||
|
{
|
||||||
|
throw new DuplicateParameterException( parameter.getName()
|
||||||
|
+ " has been declared multiple times in mojo with goal: " + getGoal() + " (implementation: "
|
||||||
|
+ getImplementation() + ")" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( parameters == null )
|
||||||
|
{
|
||||||
|
parameters = new LinkedList();
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters.add( parameter );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map getParameterMap()
|
public Map getParameterMap()
|
||||||
|
@ -135,50 +161,50 @@ public class MojoDescriptor
|
||||||
// Dependency requirement
|
// Dependency requirement
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
public void setRequiresDependencyResolution( String requiresDependencyResolution )
|
public void setDependencyResolutionRequired( String requiresDependencyResolution )
|
||||||
{
|
{
|
||||||
this.requiresDependencyResolution = requiresDependencyResolution;
|
this.dependencyResolutionRequired = requiresDependencyResolution;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRequiresDependencyResolution()
|
public String isDependencyResolutionRequired()
|
||||||
{
|
{
|
||||||
return requiresDependencyResolution;
|
return dependencyResolutionRequired;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Project requirement
|
// Project requirement
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
public void setRequiresProject( boolean requiresProject )
|
public void setProjectRequired( boolean requiresProject )
|
||||||
{
|
{
|
||||||
this.requiresProject = requiresProject;
|
this.projectRequired = requiresProject;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getRequiresProject()
|
public boolean isProjectRequired()
|
||||||
{
|
{
|
||||||
return requiresProject;
|
return projectRequired;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Online vs. Offline requirement
|
// Online vs. Offline requirement
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
public void setRequiresOnline( boolean requiresOnline )
|
public void setOnlineRequired( boolean requiresOnline )
|
||||||
{
|
{
|
||||||
this.requiresOnline = requiresOnline;
|
this.onlineRequired = requiresOnline;
|
||||||
}
|
}
|
||||||
|
|
||||||
// blech! this isn't even intelligible as a method name. provided for
|
// blech! this isn't even intelligible as a method name. provided for
|
||||||
// consistency...
|
// consistency...
|
||||||
public boolean isRequiresOnline()
|
public boolean isOnlineRequired()
|
||||||
{
|
{
|
||||||
return requiresOnline;
|
return onlineRequired;
|
||||||
}
|
}
|
||||||
|
|
||||||
// more english-friendly method...keep the code clean! :)
|
// more english-friendly method...keep the code clean! :)
|
||||||
public boolean requiresOnline()
|
public boolean requiresOnline()
|
||||||
{
|
{
|
||||||
return requiresOnline;
|
return onlineRequired;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPhase()
|
public String getPhase()
|
||||||
|
|
|
@ -129,21 +129,21 @@ public class PluginDescriptorBuilder
|
||||||
|
|
||||||
if ( dependencyResolution != null )
|
if ( dependencyResolution != null )
|
||||||
{
|
{
|
||||||
mojo.setRequiresDependencyResolution( dependencyResolution );
|
mojo.setDependencyResolutionRequired( dependencyResolution );
|
||||||
}
|
}
|
||||||
|
|
||||||
String requiresProject = c.getChild( "requiresProject" ).getValue();
|
String requiresProject = c.getChild( "requiresProject" ).getValue();
|
||||||
|
|
||||||
if ( requiresProject != null )
|
if ( requiresProject != null )
|
||||||
{
|
{
|
||||||
mojo.setRequiresProject( "true".equals( requiresProject ) );
|
mojo.setProjectRequired( Boolean.valueOf( requiresProject ).booleanValue() );
|
||||||
}
|
}
|
||||||
|
|
||||||
String requiresOnline = c.getChild( "requiresOnline" ).getValue();
|
String requiresOnline = c.getChild( "requiresOnline" ).getValue();
|
||||||
|
|
||||||
if ( requiresOnline != null )
|
if ( requiresOnline != null )
|
||||||
{
|
{
|
||||||
mojo.setRequiresOnline( "true".equals( requiresOnline ) );
|
mojo.setOnlineRequired( Boolean.valueOf( requiresOnline ).booleanValue() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
@ -168,7 +168,7 @@ public class PluginDescriptorBuilder
|
||||||
|
|
||||||
String required = d.getChild( "required" ).getValue();
|
String required = d.getChild( "required" ).getValue();
|
||||||
|
|
||||||
parameter.setRequired( "true".equals( required ) );
|
parameter.setRequired( Boolean.valueOf( required ).booleanValue() );
|
||||||
|
|
||||||
PlexusConfiguration editableConfig = d.getChild( "editable" );
|
PlexusConfiguration editableConfig = d.getChild( "editable" );
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ public class PluginDescriptorBuilder
|
||||||
{
|
{
|
||||||
String editable = d.getChild( "editable" ).getValue();
|
String editable = d.getChild( "editable" ).getValue();
|
||||||
|
|
||||||
parameter.setEditable( editable == null || "true".equals( editable ) );
|
parameter.setEditable( editable == null || Boolean.valueOf( editable ).booleanValue() );
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter.setValidator( d.getChild( "validator" ).getValue() );
|
parameter.setValidator( d.getChild( "validator" ).getValue() );
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package org.apache.maven.tools.plugin.extractor;
|
package org.apache.maven.tools.plugin.extractor;
|
||||||
|
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||||
import org.codehaus.plexus.util.DirectoryScanner;
|
import org.codehaus.plexus.util.DirectoryScanner;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
|
||||||
implements MojoDescriptorExtractor
|
implements MojoDescriptorExtractor
|
||||||
{
|
{
|
||||||
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
throws PluginToolsException
|
throws ExtractionException, InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
Map scriptFilesKeyedByBasedir = gatherScriptSourcesByBasedir( project.getScriptSourceRoots(),
|
Map scriptFilesKeyedByBasedir = gatherScriptSourcesByBasedir( project.getScriptSourceRoots(),
|
||||||
getScriptFileExtension() );
|
getScriptFileExtension() );
|
||||||
|
@ -33,7 +33,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract List extractMojoDescriptors( Map scriptFilesKeyedByBasedir, PluginDescriptor pluginDescriptor )
|
protected abstract List extractMojoDescriptors( Map scriptFilesKeyedByBasedir, PluginDescriptor pluginDescriptor )
|
||||||
throws PluginToolsException;
|
throws ExtractionException, InvalidPluginDescriptorException;
|
||||||
|
|
||||||
protected abstract String getScriptFileExtension();
|
protected abstract String getScriptFileExtension();
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.apache.maven.tools.plugin;
|
package org.apache.maven.tools.plugin.extractor;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2001-2005 The Apache Software Foundation.
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
@ -16,22 +16,18 @@ package org.apache.maven.tools.plugin;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
public class ExtractionException
|
||||||
* Error during the plugin tools.
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class PluginToolsException
|
|
||||||
extends Exception
|
extends Exception
|
||||||
{
|
{
|
||||||
public PluginToolsException( String message, Throwable throwable )
|
|
||||||
|
public ExtractionException( String message, Throwable cause )
|
||||||
{
|
{
|
||||||
super( message, throwable );
|
super( message, cause );
|
||||||
}
|
}
|
||||||
|
|
||||||
public PluginToolsException( String message )
|
public ExtractionException( String message )
|
||||||
{
|
{
|
||||||
super( message );
|
super( message );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -16,9 +16,9 @@ package org.apache.maven.tools.plugin.extractor;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -30,5 +30,5 @@ public interface MojoDescriptorExtractor
|
||||||
String ROLE = MojoDescriptorExtractor.class.getName();
|
String ROLE = MojoDescriptorExtractor.class.getName();
|
||||||
|
|
||||||
List execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
List execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
throws PluginToolsException;
|
throws ExtractionException, InvalidPluginDescriptorException;
|
||||||
}
|
}
|
|
@ -110,22 +110,22 @@ public class PluginDescriptorGenerator
|
||||||
//
|
//
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
if ( mojoDescriptor.getRequiresDependencyResolution() != null )
|
if ( mojoDescriptor.isDependencyResolutionRequired() != null )
|
||||||
{
|
{
|
||||||
element( w, "requiresDependencyResolution", mojoDescriptor.getRequiresDependencyResolution() );
|
element( w, "requiresDependencyResolution", mojoDescriptor.isDependencyResolutionRequired() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
element( w, "requiresProject", "" + mojoDescriptor.getRequiresProject() );
|
element( w, "requiresProject", "" + mojoDescriptor.isProjectRequired() );
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
element( w, "requiresOnline", "" + mojoDescriptor.requiresOnline() );
|
element( w, "requiresOnline", "" + mojoDescriptor.isOnlineRequired() );
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
|
|
|
@ -16,11 +16,11 @@ package org.apache.maven.tools.plugin.scanner;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.maven.plugin.descriptor.DuplicateMojoDescriptorException;
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
import org.apache.maven.tools.plugin.extractor.ExtractionException;
|
||||||
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
|
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
|
||||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||||
import org.codehaus.plexus.logging.Logger;
|
import org.codehaus.plexus.logging.Logger;
|
||||||
|
@ -52,7 +52,7 @@ public class DefaultMojoScanner
|
||||||
}
|
}
|
||||||
|
|
||||||
public void populatePluginDescriptor( MavenProject project, PluginDescriptor pluginDescriptor )
|
public void populatePluginDescriptor( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
throws PluginToolsException
|
throws ExtractionException, InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
Logger logger = getLogger();
|
Logger logger = getLogger();
|
||||||
|
|
||||||
|
@ -79,16 +79,8 @@ public class DefaultMojoScanner
|
||||||
|
|
||||||
descriptor.setPluginDescriptor( pluginDescriptor );
|
descriptor.setPluginDescriptor( pluginDescriptor );
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pluginDescriptor.addMojo( descriptor );
|
pluginDescriptor.addMojo( descriptor );
|
||||||
}
|
}
|
||||||
catch ( DuplicateMojoDescriptorException e )
|
|
||||||
{
|
|
||||||
throw new PluginToolsException( "Duplicate goal specification detected.\nError was: "
|
|
||||||
+ e.getLocalizedMessage(), e );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,10 @@ package org.apache.maven.tools.plugin.scanner;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
import org.apache.maven.tools.plugin.extractor.ExtractionException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jdcasey
|
* @author jdcasey
|
||||||
|
@ -28,6 +29,6 @@ public interface MojoScanner
|
||||||
String ROLE = MojoScanner.class.getName();
|
String ROLE = MojoScanner.class.getName();
|
||||||
|
|
||||||
void populatePluginDescriptor( MavenProject project, PluginDescriptor pluginDescriptor )
|
void populatePluginDescriptor( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
throws PluginToolsException;
|
throws ExtractionException, InvalidPluginDescriptorException;
|
||||||
|
|
||||||
}
|
}
|
|
@ -53,7 +53,7 @@ public abstract class AbstractGeneratorTestCase
|
||||||
MojoDescriptor mojoDescriptor = new MojoDescriptor();
|
MojoDescriptor mojoDescriptor = new MojoDescriptor();
|
||||||
mojoDescriptor.setGoal( "testGoal" );
|
mojoDescriptor.setGoal( "testGoal" );
|
||||||
mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" );
|
mojoDescriptor.setImplementation( "org.apache.maven.tools.plugin.generator.TestMojo" );
|
||||||
mojoDescriptor.setRequiresDependencyResolution( "compile" );
|
mojoDescriptor.setDependencyResolutionRequired( "compile" );
|
||||||
|
|
||||||
List params = new ArrayList();
|
List params = new ArrayList();
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class PluginDescriptorGeneratorTest
|
||||||
// The following should be defaults
|
// The following should be defaults
|
||||||
assertEquals( "per-lookup", mojoDescriptor.getInstantiationStrategy() );
|
assertEquals( "per-lookup", mojoDescriptor.getInstantiationStrategy() );
|
||||||
|
|
||||||
assertNotNull( mojoDescriptor.getRequiresDependencyResolution() );
|
assertNotNull( mojoDescriptor.isDependencyResolutionRequired() );
|
||||||
|
|
||||||
// check the parameter.
|
// check the parameter.
|
||||||
checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) );
|
checkParameter( (Parameter) mojoDescriptor.getParameters().get( 0 ) );
|
||||||
|
|
|
@ -16,11 +16,12 @@ package org.apache.maven.tools.plugin.extractor.java;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.plugin.descriptor.InvalidParameterException;
|
||||||
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
||||||
import org.apache.maven.plugin.descriptor.Parameter;
|
import org.apache.maven.plugin.descriptor.Parameter;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.tools.plugin.extractor.InvalidParameterException;
|
|
||||||
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
|
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
|
||||||
import org.codehaus.modello.StringUtils;
|
import org.codehaus.modello.StringUtils;
|
||||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||||
|
@ -33,14 +34,13 @@ import com.thoughtworks.qdox.model.JavaSource;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo add example usage tag that can be shown in the doco
|
* @todo add example usage tag that can be shown in the doco
|
||||||
* @todo need to add validation directives so that systems embedding maven2 can
|
* @todo need to add validation directives so that systems embedding maven2 can
|
||||||
|
@ -110,7 +110,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
// Mojo descriptor creation from @tags
|
// Mojo descriptor creation from @tags
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
private MojoDescriptor createMojoDescriptor( JavaSource javaSource, PluginDescriptor pluginDescriptor )
|
private MojoDescriptor createMojoDescriptor( JavaSource javaSource, PluginDescriptor pluginDescriptor ) throws InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
MojoDescriptor mojoDescriptor = new MojoDescriptor();
|
MojoDescriptor mojoDescriptor = new MojoDescriptor();
|
||||||
mojoDescriptor.setPluginDescriptor( pluginDescriptor );
|
mojoDescriptor.setPluginDescriptor( pluginDescriptor );
|
||||||
|
@ -187,7 +187,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
{
|
{
|
||||||
value = "runtime";
|
value = "runtime";
|
||||||
}
|
}
|
||||||
mojoDescriptor.setRequiresDependencyResolution( value );
|
mojoDescriptor.setDependencyResolutionRequired( value );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
@ -198,7 +198,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
|
|
||||||
if ( requiresProject != null )
|
if ( requiresProject != null )
|
||||||
{
|
{
|
||||||
mojoDescriptor.setRequiresProject( true );
|
mojoDescriptor.setProjectRequired( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
@ -209,7 +209,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
|
|
||||||
if ( requiresOnline != null )
|
if ( requiresOnline != null )
|
||||||
{
|
{
|
||||||
mojoDescriptor.setRequiresOnline( true );
|
mojoDescriptor.setOnlineRequired( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
extractParameters( mojoDescriptor, javaClass );
|
extractParameters( mojoDescriptor, javaClass );
|
||||||
|
@ -234,7 +234,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void extractParameters( MojoDescriptor mojoDescriptor, JavaClass javaClass )
|
private void extractParameters( MojoDescriptor mojoDescriptor, JavaClass javaClass ) throws InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
// ---------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------
|
||||||
// We're resolving class-level, ancestor-class-field, local-class-field order here.
|
// We're resolving class-level, ancestor-class-field, local-class-field order here.
|
||||||
|
@ -244,8 +244,6 @@ public class JavaMojoDescriptorExtractor
|
||||||
|
|
||||||
extractFieldParameterTags( javaClass, rawParams );
|
extractFieldParameterTags( javaClass, rawParams );
|
||||||
|
|
||||||
Set parameters = new HashSet();
|
|
||||||
|
|
||||||
for ( Iterator it = rawParams.entrySet().iterator(); it.hasNext(); )
|
for ( Iterator it = rawParams.entrySet().iterator(); it.hasNext(); )
|
||||||
{
|
{
|
||||||
Map.Entry entry = (Entry) it.next();
|
Map.Entry entry = (Entry) it.next();
|
||||||
|
@ -282,14 +280,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
|
|
||||||
pd.setExpression( parameter.getNamedParameter( PARAMETER_EXPRESSION ) );
|
pd.setExpression( parameter.getNamedParameter( PARAMETER_EXPRESSION ) );
|
||||||
|
|
||||||
parameters.add( pd );
|
mojoDescriptor.addParameter( pd );
|
||||||
}
|
|
||||||
|
|
||||||
if ( !parameters.isEmpty() )
|
|
||||||
{
|
|
||||||
List paramList = new ArrayList( parameters );
|
|
||||||
|
|
||||||
mojoDescriptor.setParameters( paramList );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +320,7 @@ public class JavaMojoDescriptorExtractor
|
||||||
}
|
}
|
||||||
|
|
||||||
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
throws InvalidParameterException
|
throws InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
JavaDocBuilder builder = new JavaDocBuilder();
|
JavaDocBuilder builder = new JavaDocBuilder();
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,13 @@ package org.apache.maven.tools.plugin.extractor.marmalade;
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.script.marmalade.MarmaladeMojoExecutionDirectives;
|
import org.apache.maven.script.marmalade.MarmaladeMojoExecutionDirectives;
|
||||||
import org.apache.maven.script.marmalade.tags.MojoTag;
|
import org.apache.maven.script.marmalade.tags.MojoTag;
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
|
||||||
import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor;
|
import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor;
|
||||||
|
import org.apache.maven.tools.plugin.extractor.ExtractionException;
|
||||||
import org.codehaus.marmalade.launch.MarmaladeLaunchException;
|
import org.codehaus.marmalade.launch.MarmaladeLaunchException;
|
||||||
import org.codehaus.marmalade.launch.MarmaladeLauncher;
|
import org.codehaus.marmalade.launch.MarmaladeLauncher;
|
||||||
import org.codehaus.marmalade.model.MarmaladeScript;
|
import org.codehaus.marmalade.model.MarmaladeScript;
|
||||||
|
@ -50,7 +51,7 @@ public class MarmaladeMojoDescriptorExtractor
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List extractMojoDescriptors( Map sourceFilesKeyedByBasedir, PluginDescriptor pluginDescriptor )
|
protected List extractMojoDescriptors( Map sourceFilesKeyedByBasedir, PluginDescriptor pluginDescriptor )
|
||||||
throws PluginToolsException
|
throws ExtractionException, InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
|
ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
|
||||||
try
|
try
|
||||||
|
@ -112,11 +113,20 @@ public class MarmaladeMojoDescriptorExtractor
|
||||||
}
|
}
|
||||||
catch ( IOException e )
|
catch ( IOException e )
|
||||||
{
|
{
|
||||||
throw new PluginToolsException( "Error reading descriptor Marmalade mojo in: " + scriptFile, e );
|
throw new ExtractionException( "Error extracting mojo descriptor from Marmalade script: " + scriptFile, e );
|
||||||
}
|
}
|
||||||
catch ( MarmaladeLaunchException e )
|
catch ( MarmaladeLaunchException e )
|
||||||
{
|
{
|
||||||
throw new PluginToolsException( "Error extracting descriptor Marmalade mojo from: " + scriptFile, e );
|
Throwable cause = e.getCause();
|
||||||
|
|
||||||
|
if ( cause instanceof InvalidPluginDescriptorException )
|
||||||
|
{
|
||||||
|
throw (InvalidPluginDescriptorException) cause;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new ExtractionException( "Error extracting mojo descriptor from Marmalade script: " + scriptFile, e );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,7 +121,7 @@ public abstract class AbstractCompilerMojo
|
||||||
compilerConfiguration.addCompilerOption( "-target", target );
|
compilerConfiguration.addCompilerOption( "-target", target );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( debug != null && "true".equals( debug ) )
|
if ( debug != null && Boolean.valueOf( debug ).booleanValue() )
|
||||||
{
|
{
|
||||||
compilerConfiguration.setDebug( true );
|
compilerConfiguration.setDebug( true );
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,10 @@ package org.apache.maven.plugin.plugin;
|
||||||
|
|
||||||
import org.apache.maven.plugin.AbstractMojo;
|
import org.apache.maven.plugin.AbstractMojo;
|
||||||
import org.apache.maven.plugin.MojoExecutionException;
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
|
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
|
||||||
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.tools.plugin.PluginToolsException;
|
import org.apache.maven.tools.plugin.extractor.ExtractionException;
|
||||||
import org.apache.maven.tools.plugin.generator.Generator;
|
import org.apache.maven.tools.plugin.generator.Generator;
|
||||||
import org.apache.maven.tools.plugin.scanner.MojoScanner;
|
import org.apache.maven.tools.plugin.scanner.MojoScanner;
|
||||||
import org.apache.maven.tools.plugin.util.PluginUtils;
|
import org.apache.maven.tools.plugin.util.PluginUtils;
|
||||||
|
@ -91,9 +92,13 @@ public abstract class AbstractGeneratorMojo
|
||||||
{
|
{
|
||||||
throw new MojoExecutionException( "Error writing plugin descriptor", e );
|
throw new MojoExecutionException( "Error writing plugin descriptor", e );
|
||||||
}
|
}
|
||||||
catch ( PluginToolsException e )
|
catch ( InvalidPluginDescriptorException e )
|
||||||
{
|
{
|
||||||
throw new MojoExecutionException( "Error creatin plugin descriptor", e );
|
throw new MojoExecutionException( "Error extracting plugin descriptor: \'" + e.getLocalizedMessage() + "\'", e );
|
||||||
|
}
|
||||||
|
catch ( ExtractionException e )
|
||||||
|
{
|
||||||
|
throw new MojoExecutionException( "Error extracting plugin descriptor: \'" + e.getLocalizedMessage() + "\'", e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,7 @@ public class DefaultMavenProjectBuilder
|
||||||
// Always cache files in the source tree over those in the repository
|
// Always cache files in the source tree over those in the repository
|
||||||
modelCache.put( createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ), model );
|
modelCache.put( createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ), model );
|
||||||
|
|
||||||
MavenProject project = build( model, localRepository );
|
MavenProject project = build( projectDescriptor.getAbsolutePath(), model, localRepository );
|
||||||
|
|
||||||
// Only translate the base directory for files in the source tree
|
// Only translate the base directory for files in the source tree
|
||||||
pathTranslator.alignToBaseDirectory( project.getModel(), projectDescriptor );
|
pathTranslator.alignToBaseDirectory( project.getModel(), projectDescriptor );
|
||||||
|
@ -173,7 +173,7 @@ public class DefaultMavenProjectBuilder
|
||||||
|
|
||||||
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
|
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
|
||||||
|
|
||||||
return build( model, localRepository );
|
return build( "Artifact [" + artifact.getId() + "]", model, localRepository );
|
||||||
}
|
}
|
||||||
|
|
||||||
private Model findModelFromRepository( Artifact artifact, List remoteArtifactRepositories,
|
private Model findModelFromRepository( Artifact artifact, List remoteArtifactRepositories,
|
||||||
|
@ -201,7 +201,7 @@ public class DefaultMavenProjectBuilder
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
private MavenProject build( Model model, ArtifactRepository localRepository )
|
private MavenProject build( String pomLocation, Model model, ArtifactRepository localRepository )
|
||||||
throws ProjectBuildingException
|
throws ProjectBuildingException
|
||||||
{
|
{
|
||||||
Model superModel = getSuperModel();
|
Model superModel = getSuperModel();
|
||||||
|
@ -225,11 +225,11 @@ public class DefaultMavenProjectBuilder
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
project = processProjectLogic( project, aggregatedRemoteWagonRepositories );
|
project = processProjectLogic( pomLocation, project, aggregatedRemoteWagonRepositories );
|
||||||
}
|
}
|
||||||
catch ( ModelInterpolationException e )
|
catch ( ModelInterpolationException e )
|
||||||
{
|
{
|
||||||
throw new ProjectBuildingException( "Error building project: " + model.getId(), e );
|
throw new ProjectBuildingException( "Error building project from \'" + pomLocation + "\': " + model.getId(), e );
|
||||||
}
|
}
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
@ -241,7 +241,7 @@ public class DefaultMavenProjectBuilder
|
||||||
* the resolved source roots, etc for the parent - that occurs for the parent when it is constructed independently
|
* the resolved source roots, etc for the parent - that occurs for the parent when it is constructed independently
|
||||||
* and projects are not cached or reused
|
* and projects are not cached or reused
|
||||||
*/
|
*/
|
||||||
private MavenProject processProjectLogic( MavenProject project, List remoteRepositories )
|
private MavenProject processProjectLogic( String pomLocation, MavenProject project, List remoteRepositories )
|
||||||
throws ProjectBuildingException, ModelInterpolationException
|
throws ProjectBuildingException, ModelInterpolationException
|
||||||
{
|
{
|
||||||
Model model = project.getModel();
|
Model model = project.getModel();
|
||||||
|
@ -277,7 +277,7 @@ public class DefaultMavenProjectBuilder
|
||||||
|
|
||||||
if ( validationResult.getMessageCount() > 0 )
|
if ( validationResult.getMessageCount() > 0 )
|
||||||
{
|
{
|
||||||
throw new ProjectBuildingException( "Exception while building project: " + validationResult.toString() );
|
throw new ProjectBuildingException( "Exception while building project from \'" + pomLocation + "\': " + validationResult.toString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
return project;
|
return project;
|
||||||
|
@ -489,7 +489,7 @@ public class DefaultMavenProjectBuilder
|
||||||
|
|
||||||
List remoteRepositories = buildArtifactRepositories( superModel.getRepositories() );
|
List remoteRepositories = buildArtifactRepositories( superModel.getRepositories() );
|
||||||
|
|
||||||
project = processProjectLogic( project, remoteRepositories );
|
project = processProjectLogic( "<Super-POM>", project, remoteRepositories );
|
||||||
|
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,8 @@ public class DefaultModelValidator
|
||||||
{
|
{
|
||||||
ModelValidationResult result = new ModelValidationResult();
|
ModelValidationResult result = new ModelValidationResult();
|
||||||
|
|
||||||
|
validateStringNotEmpty( "modelVersion", result, model.getModelVersion() );
|
||||||
|
|
||||||
validateStringNotEmpty( "groupId", result, model.getGroupId() );
|
validateStringNotEmpty( "groupId", result, model.getGroupId() );
|
||||||
|
|
||||||
validateStringNotEmpty( "artifactId", result, model.getArtifactId() );
|
validateStringNotEmpty( "artifactId", result, model.getArtifactId() );
|
||||||
|
|
|
@ -17,6 +17,7 @@ package org.apache.maven.project.validation;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,6 +47,11 @@ public class ModelValidationResult
|
||||||
return messages.get( i ).toString();
|
return messages.get( i ).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List getMessages()
|
||||||
|
{
|
||||||
|
return Collections.unmodifiableList( messages );
|
||||||
|
}
|
||||||
|
|
||||||
public void addMessage( String message )
|
public void addMessage( String message )
|
||||||
{
|
{
|
||||||
messages.add( message );
|
messages.add( message );
|
||||||
|
|
|
@ -22,6 +22,7 @@ import org.apache.maven.project.MavenProjectTestCase;
|
||||||
|
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
|
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
|
||||||
|
@ -34,6 +35,15 @@ public class DefaultModelValidatorTest
|
||||||
|
|
||||||
private ModelValidator validator;
|
private ModelValidator validator;
|
||||||
|
|
||||||
|
public void testMissingModelVersion() throws Exception
|
||||||
|
{
|
||||||
|
ModelValidationResult result = validate( "missing-modelVersion-pom.xml" );
|
||||||
|
|
||||||
|
assertEquals( 1, result.getMessageCount() );
|
||||||
|
|
||||||
|
assertEquals( "'modelVersion' is missing.", result.getMessage( 0 ) );
|
||||||
|
}
|
||||||
|
|
||||||
public void testMissingArtifactId()
|
public void testMissingArtifactId()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
@ -79,18 +89,21 @@ public class DefaultModelValidatorTest
|
||||||
{
|
{
|
||||||
ModelValidationResult result = validate( "missing-1-pom.xml" );
|
ModelValidationResult result = validate( "missing-1-pom.xml" );
|
||||||
|
|
||||||
assertEquals( 3, result.getMessageCount() );
|
assertEquals( 4, result.getMessageCount() );
|
||||||
|
|
||||||
assertEquals( "'groupId' is missing.", result.getMessage( 0 ) );
|
List messages = result.getMessages();
|
||||||
assertEquals( "'artifactId' is missing.", result.getMessage( 1 ) );
|
|
||||||
|
assertTrue( messages.contains("\'modelVersion\' is missing."));
|
||||||
|
assertTrue( messages.contains("\'groupId\' is missing."));
|
||||||
|
assertTrue( messages.contains("\'artifactId\' is missing."));
|
||||||
|
assertTrue( messages.contains("\'version\' is missing."));
|
||||||
// type is inherited from the super pom
|
// type is inherited from the super pom
|
||||||
assertEquals( "'version' is missing.", result.getMessage( 2 ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ModelValidationResult validate( String testName )
|
private ModelValidationResult validate( String testName )
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
Reader input = new FileReader( getTestFile( "src/test/resources/validation/" + testName ) );
|
Reader input = new FileReader( getFileForClasspathResource( "/validation/" + testName ) );
|
||||||
|
|
||||||
MavenXpp3Reader reader = new MavenXpp3Reader();
|
MavenXpp3Reader reader = new MavenXpp3Reader();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<model>
|
<model>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>maven</groupId>
|
<groupId>maven</groupId>
|
||||||
<artifactId>maven-project-test</artifactId>
|
<artifactId>maven-project-test</artifactId>
|
||||||
<name>Maven</name>
|
<name>Maven</name>
|
||||||
|
|
Loading…
Reference in New Issue