[maven] maven 4 report problems

GitOrigin-RevId: 620e9a9a1e646ab4dcf845ce1a214c47cc3c210e
This commit is contained in:
Alexander Bubenchikov
2024-08-02 16:39:47 +02:00
committed by intellij-monorepo-bot
parent fa9d111ba5
commit 6ea0f4bf8f
4 changed files with 71 additions and 7 deletions

View File

@@ -475,7 +475,7 @@ public class Maven40ProjectResolver {
ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
projectBuildingRequest.setRepositorySession(session.getRepositorySession());
projectBuildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
projectBuildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_4_0);
projectBuildingRequest.setResolveDependencies(false);
if (files.size() == 1) {

View File

@@ -1,6 +1,8 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.maven.server.m40.utils;
import org.apache.maven.api.services.ModelBuilderException;
import org.apache.maven.model.building.DefaultModelProblem;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.project.DependencyResolutionResult;
@@ -9,6 +11,7 @@ import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ProjectBuildingResult;
import java.io.File;
import java.util.Collections;
import java.util.List;
public final class Maven40ResolverUtil {
@@ -19,11 +22,18 @@ public final class Maven40ResolverUtil {
}
else {
Throwable cause = e.getCause();
List<ModelProblem> problems = null;
if (cause instanceof ModelBuildingException) {
problems = ((ModelBuildingException)cause).getProblems();
buildingResults.add(new MyProjectBuildingResult(null, e.getPomFile(), null, ((ModelBuildingException)cause).getProblems(), null));
}
else if (cause instanceof ModelBuilderException) {
buildingResults.add(new MyProjectBuildingResult(null, e.getPomFile(), null, MavenApiConverterUtil.convertFromApiProblems(
((ModelBuilderException)cause).getProblems()), null));
}
else {
buildingResults.add(new MyProjectBuildingResult(null, e.getPomFile(), null, Collections.singletonList(
new DefaultModelProblem(cause.getMessage(), ModelProblem.Severity.FATAL, ModelProblem.Version.BASE, "", 0, 0, null, e)
), null));
}
buildingResults.add(new MyProjectBuildingResult(null, e.getPomFile(), null, problems, null));
}
}
@@ -72,5 +82,4 @@ public final class Maven40ResolverUtil {
return myDependencyResolutionResult;
}
}
}

View File

@@ -0,0 +1,55 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.maven.server.m40.utils;
import org.apache.maven.api.services.BuilderProblem;
import org.apache.maven.model.building.DefaultModelProblem;
import org.apache.maven.model.building.ModelProblem;
import java.util.List;
import java.util.stream.Collectors;
public final class MavenApiConverterUtil {
private MavenApiConverterUtil() { }
@SuppressWarnings("SSBasedInspection")
public static List<ModelProblem> convertFromApiProblems(List<org.apache.maven.api.services.ModelProblem> problems) {
return problems.stream().map(it -> new DefaultModelProblem(
it.getMessage(),
convertFromApiSeverity(it.getSeverity()),
convertFromApiVersion(it.getVersion()),
it.getSource(),
it.getLineNumber(),
it.getColumnNumber(),
it.getModelId(),
it.getException()
)).collect(Collectors.toList());
}
private static ModelProblem.Version convertFromApiVersion(org.apache.maven.api.services.ModelProblem.Version version) {
switch (version) {
case BASE:
return ModelProblem.Version.BASE;
case V20:
return ModelProblem.Version.V20;
case V30:
return ModelProblem.Version.V30;
case V31:
return ModelProblem.Version.V31;
case V40:
return ModelProblem.Version.V40;
}
throw new IllegalArgumentException(version.toString());
}
static private ModelProblem.Severity convertFromApiSeverity(BuilderProblem.Severity severity) {
switch (severity) {
case FATAL:
return ModelProblem.Severity.FATAL;
case ERROR:
return ModelProblem.Severity.ERROR;
case WARNING:
return ModelProblem.Severity.WARNING;
}
throw new IllegalArgumentException(severity.toString());
}
}

View File

@@ -49,7 +49,7 @@ class InvalidProjectImportingTest : MavenMultiVersionImportingTestCase() {
}
forMaven4 {
assertProblems(projectsManager.findProject(projectPom)!! , "'dependencies.dependency.systemPath' for junit:junit:jar is missing.")
assertProblems(projectsManager.findProject(projectPom)!!, "'dependencies.dependency.scope' for junit:junit:jar declares usage of deprecated 'system' scope ", "'dependencies.dependency.systemPath' for junit:junit:jar is missing.")
}
@@ -191,7 +191,7 @@ class InvalidProjectImportingTest : MavenMultiVersionImportingTestCase() {
assertModules("project")
val root = rootProjects[0]
val problem = if (isMaven4
) "'artifactId' with value '\${undefined}' does not match a valid coordinate id pattern."
) "'artifactId' contains an expression but should be a constant., 'artifactId' with value '\${undefined}' does not match a valid coordinate id pattern."
else "'artifactId' with value '\${undefined}' does not match a valid id pattern."
assertProblems(root, problem)
}