maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Elliotte Rusty Harold (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (MNG-6495) ModelResolver cannot be null
Date Tue, 30 Oct 2018 15:33:00 GMT

    [ https://issues.apache.org/jira/browse/MNG-6495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16668887#comment-16668887
] 

Elliotte Rusty Harold edited comment on MNG-6495 at 10/30/18 3:32 PM:
----------------------------------------------------------------------

I think this is the code where I stumbled onto this. Looks like I since added a ModelResolver
to avoid the issue, but try setting that to null instead and see what happens. 

{{package com.google.cloud.tools.opensource.dependencies;

import java.net.MalformedURLException;
import java.net.URL;

import org.apache.maven.building.UrlSource;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuilder;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingResult;
import org.apache.maven.model.building.ModelSource;
import org.apache.maven.model.building.UrlModelSource;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.UnresolvableModelException;
import org.apache.maven.project.ProjectModelResolver;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.resolution.DependencyResolutionException;

public class MetadataExplorer {

  public static void main(String[] args)
      throws DependencyCollectionException, DependencyResolutionException, MalformedURLException,
UnresolvableModelException {
    
    try {
      DefaultArtifact artifact = new DefaultArtifact("com.google.guava:guava:26.0-jre");
      DefaultModelBuilder modelBuilder = new DefaultModelBuilderFactory().newInstance();

      ModelBuildingRequest request = new DefaultModelBuildingRequest();
      URL pomUrl = new URL(
          "https://repo1.maven.org/maven2/com/google/guava/guava/26.0-jre/guava-26.0-jre.pom");
      UrlModelSource source = new UrlModelSource(pomUrl);
      request.setModelSource(source);
      
      ProjectModelResolver modelResolver
          = new ProjectModelResolver(null, null, null, null, null, null, null);
      
      ModelSource s = modelResolver.resolveModel("com.google.guava", "guava", "26.0-jre");
      
      request.setModelResolver(modelResolver);
      ModelBuildingResult result = modelBuilder.build(request);
      Model model = result.getEffectiveModel();
      System.out.println(model.getArtifactId());
    } catch (IllegalArgumentException ex) {
      System.err.println("Bad Maven coordinates " + args[0]);
      return;      
    } catch (ModelBuildingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

}}}



was (Author: elharo):
I think this is the code where I stumbled onto this. Looks like I since added a ModelResolver
to avoid the issue, but try setting that to null instead and see what happens. 


package com.google.cloud.tools.opensource.dependencies;

import java.net.MalformedURLException;
import java.net.URL;

import org.apache.maven.building.UrlSource;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuilder;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingResult;
import org.apache.maven.model.building.ModelSource;
import org.apache.maven.model.building.UrlModelSource;
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.UnresolvableModelException;
import org.apache.maven.project.ProjectModelResolver;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.resolution.DependencyResolutionException;

public class MetadataExplorer {

  public static void main(String[] args)
      throws DependencyCollectionException, DependencyResolutionException, MalformedURLException,
UnresolvableModelException {
    
    try {
      DefaultArtifact artifact = new DefaultArtifact("com.google.guava:guava:26.0-jre");
      DefaultModelBuilder modelBuilder = new DefaultModelBuilderFactory().newInstance();

      ModelBuildingRequest request = new DefaultModelBuildingRequest();
      URL pomUrl = new URL(
          "https://repo1.maven.org/maven2/com/google/guava/guava/26.0-jre/guava-26.0-jre.pom");
      UrlModelSource source = new UrlModelSource(pomUrl);
      request.setModelSource(source);
      
      ProjectModelResolver modelResolver
          = new ProjectModelResolver(null, null, null, null, null, null, null);
      
      ModelSource s = modelResolver.resolveModel("com.google.guava", "guava", "26.0-jre");
      
      request.setModelResolver(modelResolver);
      ModelBuildingResult result = modelBuilder.build(request);
      Model model = result.getEffectiveModel();
      System.out.println(model.getArtifactId());
    } catch (IllegalArgumentException ex) {
      System.err.println("Bad Maven coordinates " + args[0]);
      return;      
    } catch (ModelBuildingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

}


> ModelResolver cannot be null
> ----------------------------
>
>                 Key: MNG-6495
>                 URL: https://issues.apache.org/jira/browse/MNG-6495
>             Project: Maven
>          Issue Type: Bug
>          Components: Bootstrap &amp; Build
>    Affects Versions: 3.5.4
>            Reporter: Elliotte Rusty Harold
>            Priority: Major
>
> Got this exception stacktrace while writing some of my own code today:
> {noformat}
> Exception in thread "main" java.lang.NullPointerException: request.modelResolver cannot
be null (parent POM com.google.guava:guava-parent:26.0-jre and POM com.google.guava:guava:[unknown-version])
> 	at org.apache.commons.lang3.Validate.notNull(Validate.java:225)
> 	at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:1046)
> 	at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:830)
> 	at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:332)
> 	at com.google.cloud.tools.opensource.dependencies.MetadataExplorer.main(MetadataExplorer.java:50)
> {noformat}
> No big deal except that the JavaDoc at [ModelBuildingRequest|http://maven.apache.org/ref/3.5.4/maven-model-builder/apidocs/org/apache/maven/model/building/ModelBuildingRequest.html]
says "The model resolver to use, may be null."
> Not sure whether to update the docs or the code here. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message