Move modelVersion inference to model builder so that it is also effective on consumer models (#1566)

This commit is contained in:
Guillaume Nodet 2024-06-07 09:31:02 +02:00 committed by GitHub
parent dd670bf9a1
commit 33010af039
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 13 deletions

View File

@ -44,28 +44,15 @@
@Singleton
public class BuildModelTransformer implements ModelTransformer {
public static final String NAMESPACE_PREFIX = "http://maven.apache.org/POM/";
@Override
public Model transform(ModelTransformerContext context, Model model, Path path) {
Model.Builder builder = Model.newBuilder(model);
handleModelVersion(context, model, path, builder);
handleParent(context, model, path, builder);
handleReactorDependencies(context, model, path, builder);
handleCiFriendlyVersion(context, model, path, builder);
return builder.build();
}
//
// Infer modelVersion from namespace URI
//
void handleModelVersion(ModelTransformerContext context, Model model, Path pomFile, Model.Builder builder) {
String namespace = model.getNamespaceUri();
if (model.getModelVersion() == null && namespace != null && namespace.startsWith(NAMESPACE_PREFIX)) {
builder.modelVersion(namespace.substring(NAMESPACE_PREFIX.length()));
}
}
//
// Infer parent information
//

View File

@ -99,6 +99,7 @@
@Singleton
public class DefaultModelBuilder implements ModelBuilder {
public static final String NAMESPACE_PREFIX = "http://maven.apache.org/POM/";
private static final String RAW = "raw";
private static final String FILE = "file";
private static final String IMPORT = "import";
@ -749,6 +750,11 @@ private ModelData doReadRawModel(
}
}
String namespace = rawModel.getNamespaceUri();
if (rawModel.getModelVersion() == null && namespace != null && namespace.startsWith(NAMESPACE_PREFIX)) {
rawModel = rawModel.withModelVersion(namespace.substring(NAMESPACE_PREFIX.length()));
}
modelValidator.validateRawModel(rawModel, request, problems);
if (hasFatalErrors(problems)) {