in maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java [51:216]
public ModelValidationResult validate( final Model model )
{
ModelValidationResult result = new ModelValidationResult();
validateStringNotEmpty( "modelVersion", result, model.getModelVersion() );
validateId( "groupId", result, model.getGroupId() );
validateId( "artifactId", result, model.getArtifactId() );
validateStringNotEmpty( "packaging", result, model.getPackaging() );
if ( !model.getModules().isEmpty() && !"pom".equals( model.getPackaging() ) )
{
result.addMessage( "Packaging '" + model.getPackaging() + "' is invalid. Aggregator projects "
+ "require 'pom' as packaging." );
}
Parent parent = model.getParent();
if ( parent != null )
{
if ( parent.getGroupId().equals( model.getGroupId() )
&& parent.getArtifactId().equals( model.getArtifactId() ) )
{
result.addMessage( "The parent element cannot have the same ID as the project." );
}
}
validateStringNotEmpty( "version", result, model.getVersion() );
for ( Iterator it = model.getDependencies().iterator(); it.hasNext(); )
{
Dependency d = (Dependency) it.next();
validateId( "dependencies.dependency.artifactId", result, d.getArtifactId() );
validateId( "dependencies.dependency.groupId", result, d.getGroupId() );
validateStringNotEmpty( "dependencies.dependency.type", result, d.getType(), d.getManagementKey() );
validateStringNotEmpty( "dependencies.dependency.version", result, d.getVersion(), d.getManagementKey() );
if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) )
{
String systemPath = d.getSystemPath();
if ( StringUtils.isEmpty( systemPath ) )
{
result.addMessage( "For dependency " + d + ": system-scoped dependency must specify systemPath." );
}
else
{
if ( ! new File( systemPath ).isAbsolute() )
{
result.addMessage( "For dependency " + d + ": system-scoped dependency must "
+ "specify an absolute path systemPath." );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
result.addMessage(
"For dependency " + d + ": only dependency with system scope can specify systemPath." );
}
}
DependencyManagement mgmt = model.getDependencyManagement();
if ( mgmt != null )
{
for ( Iterator it = mgmt.getDependencies().iterator(); it.hasNext(); )
{
Dependency d = (Dependency) it.next();
validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.artifactId", result,
d.getArtifactId() );
validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.groupId", result,
d.getGroupId() );
if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) )
{
String systemPath = d.getSystemPath();
if ( StringUtils.isEmpty( systemPath ) )
{
result.addMessage( "For managed dependency " + d + ": system-scoped dependency must specify systemPath." );
}
else
{
if ( ! new File( systemPath ).isAbsolute() )
{
result.addMessage( "For managed dependency " + d + ": system-scoped dependency must "
+ "specify an absolute path systemPath." );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
result.addMessage(
"For managed dependency " + d + ": only dependency with system scope can specify systemPath." );
}
else if ( Artifact.SCOPE_IMPORT.equals( d.getScope() ) )
{
if ( !"pom".equals( d.getType() ) )
{
result.addMessage( "For managed dependency " + d
+ ": dependencies with import scope must have type 'pom'." );
}
else if ( d.getClassifier() != null )
{
result.addMessage( "For managed dependency " + d
+ ": dependencies with import scope must NOT have a classifier." );
}
}
}
}
Build build = model.getBuild();
if ( build != null )
{
for ( Iterator it = build.getPlugins().iterator(); it.hasNext(); )
{
Plugin p = (Plugin) it.next();
validateStringNotEmpty( "build.plugins.plugin.artifactId", result, p.getArtifactId() );
validateStringNotEmpty( "build.plugins.plugin.groupId", result, p.getGroupId() );
}
for ( Iterator it = build.getResources().iterator(); it.hasNext(); )
{
Resource r = (Resource) it.next();
validateStringNotEmpty( "build.resources.resource.directory", result, r.getDirectory() );
}
for ( Iterator it = build.getTestResources().iterator(); it.hasNext(); )
{
Resource r = (Resource) it.next();
validateStringNotEmpty( "build.testResources.testResource.directory", result, r.getDirectory() );
}
}
Reporting reporting = model.getReporting();
if ( reporting != null )
{
for ( Iterator it = reporting.getPlugins().iterator(); it.hasNext(); )
{
ReportPlugin p = (ReportPlugin) it.next();
validateStringNotEmpty( "reporting.plugins.plugin.artifactId", result, p.getArtifactId() );
validateStringNotEmpty( "reporting.plugins.plugin.groupId", result, p.getGroupId() );
}
}
validateRepositories( result, model.getRepositories(), "repositories.repository" );
validateRepositories( result, model.getPluginRepositories(), "pluginRepositories.pluginRepository" );
forcePluginExecutionIdCollision( model, result );
return result;
}