You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Cristiano <cv...@gmail.com> on 2018/09/25 00:17:05 UTC

Possible bug in the ProjectBuilder (3.5.4) ?

Hello, I need some assistance in order to identify whether the issue I'm 
facing is a bug or a missing feature.

I'm adding a goal to my plugin that must read a POM project from a 
repository and get details about the dependencies declared on it.

In order to build the POM object I've created the method below that are 
using Core's org.apache.maven.project.ProjectBuilder:


             public MavenProject loadProject(Artifact artifact,
        MavenSession session,
                     boolean pResolveDependencies) throws
        ProjectBuildingException {
                 ProjectBuildingRequest request = new
        DefaultProjectBuildingRequest();
        request.setLocalRepository(session.getLocalRepository());
                 request.setRemoteRepositories(
        session.getCurrentProject().getRemoteArtifactRepositories());
                 request.setResolveDependencies(pResolveDependencies);
        request.setRepositorySession(session.getRepositorySession());
                 request.setInactiveProfileIds(
        Arrays.asList("when-building-java-using-java8"));  ---> I added
        this in order to try no get one of the errors reported.
                 return projectBuilder.build(artifact,
        request).getProject();
             }


    In order to test it I'm trying to read this [pom]
    https://search.maven.org/classic/#artifactdetails%7Cbr.com.c8tech.releng%7Cfpom-deps-felix%7C2.1%7Cpom.

    This POM has declared a POM fragment:

>         <dependencyManagement>
>             <dependencies>
>                 <dependency>
>     <groupId>br.com.c8tech.releng</groupId>
>                     <version>2.1</version>
>     <artifactId>fpom-deps-osgi</artifactId>
>                     <scope>import</scope>
>                     <type>pom</type>

    And I'm using this code:

        {

          pom = loadProject(
                             new
        DefaultArtifact("br.com.c8tech.releng:fpom-deps-felix:pom:2.1"),
                             true);

        }

    The error I'm getting from ProjectBuilder is about not being able to
    get the versions declared in the imported POM ( declared in its
    dependencyManagement) and also not being able to determine the Java
    version of a profile activated by <jdk> property.


>     Caused by: org.apache.maven.project.ProjectBuildingException: Some
>     problems were encountered while processing the POMs:
>     [ERROR] Failed to determine Java version for profile
>     when-building-java-using-java8 @
>     br.com.c8tech.releng:maven-parent-java:2.1,
>     /home/cvgaviao/.m2/repository/br/com/c8tech/releng/maven-parent-java/2.1/maven-parent-java-2.1.pom,
>     line 658, column 22
>     [ERROR] 'dependencies.dependency.version' for
>     net.java.dev.jna:jna:jar is missing. @
>     br.com.c8tech.releng:fpom-deps-felix:[unknown-version],
>     /home/cvgaviao/.m2/repository/br/com/c8tech/releng/fpom-deps-felix/2.1/fpom-deps-felix-2.1.pom,
>     line 329, column 21
>     [ERROR] 'dependencies.dependency.version' for
>     ch.qos.logback:logback-core:jar is missing. @
>     br.com.c8tech.releng:fpom-deps-felix:[unknown-version],
>     /home/cvgaviao/.m2/repository/br/com/c8tech/releng/fpom-deps-felix/2.1/fpom-deps-felix-2.1.pom,
>     line 337, column 21

could someone tell me if its a missing feature, a bug or maybe am I 
missing something ?


thanks a lot,


Cristiano


Re: Possible bug in the ProjectBuilder (3.5.4) ?

Posted by Cristiano <cv...@gmail.com>.
Ok, I found where the problem was... :-)

Certainly I do not set necessary objects to new instance of 
ProjectBuildingRequest  that I was doing.

Once I have reused the instance provided by the MavenSession instance, 
the errors gone !

> ProjectBuildingRequest request = session.getProjectBuildingRequest();

best regards,

Cristiano


On 24/09/2018 21:17, Cristiano wrote:
>
> Hello, I need some assistance in order to identify whether the issue 
> I'm facing is a bug or a missing feature.
>
> I'm adding a goal to my plugin that must read a POM project from a 
> repository and get details about the dependencies declared on it.
>
> In order to build the POM object I've created the method below that 
> are using Core's org.apache.maven.project.ProjectBuilder:
>
>
>             public MavenProject loadProject(Artifact artifact,
>         MavenSession session,
>                     boolean pResolveDependencies) throws
>         ProjectBuildingException {
>                 ProjectBuildingRequest request = new
>         DefaultProjectBuildingRequest();
>         request.setLocalRepository(session.getLocalRepository());
>                 request.setRemoteRepositories(
>         session.getCurrentProject().getRemoteArtifactRepositories());
>         request.setResolveDependencies(pResolveDependencies);
>         request.setRepositorySession(session.getRepositorySession());
>                 request.setInactiveProfileIds(
>         Arrays.asList("when-building-java-using-java8"));  ---> I
>         added this in order to try no get one of the errors reported.
>                 return projectBuilder.build(artifact,
>         request).getProject();
>             }
>
>
>     In order to test it I'm trying to read this [pom]
>     https://search.maven.org/classic/#artifactdetails%7Cbr.com.c8tech.releng%7Cfpom-deps-felix%7C2.1%7Cpom.
>
>     This POM has declared a POM fragment:
>
>>         <dependencyManagement>
>>             <dependencies>
>>                 <dependency>
>>     <groupId>br.com.c8tech.releng</groupId>
>>                     <version>2.1</version>
>>     <artifactId>fpom-deps-osgi</artifactId>
>>                     <scope>import</scope>
>>                     <type>pom</type>
>
>     And I'm using this code:
>
>         {
>
>          pom = loadProject(
>                             new
>         DefaultArtifact("br.com.c8tech.releng:fpom-deps-felix:pom:2.1"),
>                             true);
>
>         }
>
>     The error I'm getting from ProjectBuilder is about not being able
>     to get the versions declared in the imported POM ( declared in its
>     dependencyManagement) and also not being able to determine the
>     Java version of a profile activated by <jdk> property.
>
>
>>     Caused by: org.apache.maven.project.ProjectBuildingException:
>>     Some problems were encountered while processing the POMs:
>>     [ERROR] Failed to determine Java version for profile
>>     when-building-java-using-java8 @
>>     br.com.c8tech.releng:maven-parent-java:2.1,
>>     /home/cvgaviao/.m2/repository/br/com/c8tech/releng/maven-parent-java/2.1/maven-parent-java-2.1.pom,
>>     line 658, column 22
>>     [ERROR] 'dependencies.dependency.version' for
>>     net.java.dev.jna:jna:jar is missing. @
>>     br.com.c8tech.releng:fpom-deps-felix:[unknown-version],
>>     /home/cvgaviao/.m2/repository/br/com/c8tech/releng/fpom-deps-felix/2.1/fpom-deps-felix-2.1.pom,
>>     line 329, column 21
>>     [ERROR] 'dependencies.dependency.version' for
>>     ch.qos.logback:logback-core:jar is missing. @
>>     br.com.c8tech.releng:fpom-deps-felix:[unknown-version],
>>     /home/cvgaviao/.m2/repository/br/com/c8tech/releng/fpom-deps-felix/2.1/fpom-deps-felix-2.1.pom,
>>     line 337, column 21
>
> could someone tell me if its a missing feature, a bug or maybe am I 
> missing something ?
>
>
> thanks a lot,
>
>
> Cristiano
>