You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Konrad Windszus (Jira)" <ji...@apache.org> on 2024/08/11 15:17:00 UTC

[jira] [Created] (MRESOLVER-597) RepositorySystem.resolveArtifactRepositorySystemSession session, ArtifactRequest request) throws unexpected IllegalArgumentException

Konrad Windszus created MRESOLVER-597:
-----------------------------------------

             Summary: RepositorySystem.resolveArtifactRepositorySystemSession session, ArtifactRequest request) throws unexpected IllegalArgumentException
                 Key: MRESOLVER-597
                 URL: https://issues.apache.org/jira/browse/MRESOLVER-597
             Project: Maven Resolver
          Issue Type: Improvement
    Affects Versions: 1.9.20
            Reporter: Konrad Windszus


I see the following exception when trying to resolve an artifact which does not have a version via

{code}
ArtifactRequest request = new ArtifactRequest();
request.setArtifact(artifact);
ArtifactResult result = repositorySystem.resolveArtifact(repositorySession, request);
{code}

{code}
java.lang.IllegalArgumentException: version can neither be null, empty nor blank
    at org.apache.maven.artifact.ArtifactUtils.notBlank (ArtifactUtils.java:95)
    at org.apache.maven.artifact.ArtifactUtils.key (ArtifactUtils.java:86)
    at org.apache.maven.ReactorReader.findArtifact (ReactorReader.java:96)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:350)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:261)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:243)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact (DefaultRepositorySystem.java:278)
{code}


According to https://github.com/apache/maven-resolver/blob/362a43675f01b8bb3d85d7b0ff76a21d57de6fee/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java#L137 every argument passed to the constructor of {{DefaultArtifact}} may be {{null}} or empty. However not all {{Artifact}} objects are valid then for {{ArtifactRequest}}.

Although throwing an exception is totally valid here either the {{IllegalArgumentException}} should be documented in the javadoc of https://maven.apache.org/resolver/apidocs/org/eclipse/aether/RepositorySystem.html#resolveArtifact(org.eclipse.aether.RepositorySystemSession,org.eclipse.aether.resolution.ArtifactRequest).
IMHO it would make sense to throw the exception already when either populating or constructing the {{ArtifactRequest}}, as only non empty coordinates are supported.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)