+ "' is invalid. Aggregator projects " + "require 'pom' as packaging." );
}
validateStringNotEmpty( "version", problems, Severity.ERROR, model.getVersion() );
Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
for ( Dependency d : model.getDependencies() )
{
validateId( "dependencies.dependency.artifactId", problems, d.getArtifactId(), d.getManagementKey() );
validateId( "dependencies.dependency.groupId", problems, d.getGroupId(), d.getManagementKey() );
validateStringNotEmpty( "dependencies.dependency.type", problems, Severity.ERROR, d.getType(),
d.getManagementKey() );
validateStringNotEmpty( "dependencies.dependency.version", problems, Severity.ERROR, d.getVersion(),
d.getManagementKey() );
if ( "system".equals( d.getScope() ) )
{
String systemPath = d.getSystemPath();
if ( StringUtils.isEmpty( systemPath ) )
{
addViolation( problems, Severity.ERROR, "For dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify systemPath." );
}
else
{
if ( !new File( systemPath ).isAbsolute() )
{
addViolation( problems, Severity.ERROR, "For dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify an absolute systemPath but is " + systemPath );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
addViolation( problems, Severity.ERROR, "For dependency " + d.getManagementKey()
+ ": only dependency with system scope can specify systemPath." );
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
validateVersion( "dependencies.dependency.version", problems, errOn30, d.getVersion(),
d.getManagementKey() );
validateBoolean( "dependencies.dependency.optional", problems, errOn30, d.getOptional(),
d.getManagementKey() );
/*
* TODO: Extensions like Flex Mojos use custom scopes like "merged", "internal", "external", etc. In
* order to don't break backward-compat with those, only warn but don't error out.
*/
validateEnum( "dependencies.dependency.scope", problems, Severity.WARNING, d.getScope(),
d.getManagementKey(), "provided", "compile", "runtime", "test", "system" );
}
}
DependencyManagement mgmt = model.getDependencyManagement();
if ( mgmt != null )
{
for ( Dependency d : mgmt.getDependencies() )
{
validateStringNotEmpty( "dependencyManagement.dependencies.dependency.artifactId", problems,
Severity.ERROR, d.getArtifactId(), d.getManagementKey() );
validateStringNotEmpty( "dependencyManagement.dependencies.dependency.groupId", problems,
Severity.ERROR, d.getGroupId(), d.getManagementKey() );
if ( "system".equals( d.getScope() ) )
{
String systemPath = d.getSystemPath();
if ( StringUtils.isEmpty( systemPath ) )
{
addViolation( problems, Severity.ERROR, "For managed dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify systemPath." );
}
else
{
if ( !new File( systemPath ).isAbsolute() )
{
addViolation( problems, Severity.ERROR, "For managed dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify an absolute systemPath but is " + systemPath );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
addViolation( problems, Severity.ERROR, "For managed dependency " + d.getManagementKey()
+ ": only dependency with system scope can specify systemPath." );
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
validateBoolean( "dependencyManagement.dependencies.dependency.optional", problems, errOn30,
d.getOptional(), d.getManagementKey() );
}
}
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
Set<String> modules = new HashSet<String>();
for ( String module : model.getModules() )
{
if ( !modules.add( module ) )
{
addViolation( problems, Severity.ERROR, "Duplicate child module: " + module );
}
}
Severity errOn31 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
Build build = model.getBuild();
if ( build != null )
{
for ( Plugin p : build.getPlugins() )