Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting "The POM for <name> is invalid, transitive dependencies (if any) will not be available" only in Eclipse

I have recently upgraded to JAXB 2.2.11 and noticed in my Eclipse console the following message:

10/15/14, 11:42:46 PM GMT+2: [INFO] Creating new launch configuration
10/15/14, 11:42:58 PM GMT+2: [INFO] C:\Projects\workspaces\mj2p\maven-jaxb2-plugin-project\tests\JAXB-1044
10/15/14, 11:42:58 PM GMT+2: [INFO]  mvn  -B -X -e clean install
10/16/14, 12:09:07 AM GMT+2: [WARN] The POM for com.sun.xml.bind:jaxb-impl:jar:2.2.11 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for com.sun.xml.bind:jaxb-impl:2.2.11
[ERROR] 'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} @ 

10/16/14, 12:09:07 AM GMT+2: [WARN] The POM for com.sun.xml.bind:jaxb-xjc:jar:2.2.11 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for com.sun.xml.bind:jaxb-xjc:2.2.11
[ERROR] 'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} @ 

10/16/14, 12:09:07 AM GMT+2: [WARN] The POM for com.sun.xml.bind:jaxb-core:jar:2.2.11 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for com.sun.xml.bind:jaxb-core:2.2.11
[ERROR] 'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} @ 

What puzzles me is that I am not getting this warning in console. The poms in question also seems to be correct. I am sure I am using the same Maven installation in the console and in Eclipse (m2e). The repository also seems to be correct.

Does anyone happen to know, what could be causing this?

Please note that this is not a duplicate for (almost identically-named) question:

  • The POM for <name> is invalid, transitive dependencies (if any) will not be available

This question is about the differences between Maven execution in the console and from the Eclipse.

like image 268
lexicore Avatar asked Oct 15 '14 22:10

lexicore


People also ask

How do I determine which POM contains missing transitive dependency?

How do I determine which POM contains missing transitive dependency? Ans. If its already there in Maven local repository, We can add that as a dependency in the project pom file with its Group Id, Artifact Id and version.

How do you exclude transitive dependency of transitive dependency?

Multiple transitive dependencies can be excluded by using the <exclusion> tag for each of the dependency you want to exclude and placing all these exclusion tags inside the <exclusions> tag in pom. xml. You will need to mention the group id and artifact id of the dependency you wish to exclude in the exclusion tag.

What is transitive dependency in POM?

Transitive dependency means that if A depends on B and B depends on C, then A depends on both B and C. Sometimes, transitivity brings a very serious problem when different versions of the same artifacts are included by different dependencies. It may cause version mismatch issues in runtime.


3 Answers

The pom for com.sun.xml.bind.jaxb-impl has com.sun.xml.bind:jaxb-parent has its parent.

jaxb-parent pom has the following section:

<profile>
    <id>default-tools.jar</id>
    <activation>
        <file>
            <exists>${java.home}/../lib/tools.jar</exists>
        </file>
    </activation>
    <properties>
        <tools.jar>${java.home}/../lib/tools.jar</tools.jar>
    </properties>
</profile>
<profile>
    <id>default-tools.jar-mac</id>
    <activation>
    <file>
        <exists>${java.home}/../Classes/classes.jar</exists>
    </file>
    </activation>
    <properties>
        <tools.jar>${java.home}/../Classes/classes.jar</tools.jar>
    </properties>
</profile>

In your Eclipse, neither of the profile seems to be activated due to which ${tools.jar} does not have a value.

One possibility could be JAVA_HOME value is set incorrectly.

like image 88
Raghuram Avatar answered Oct 05 '22 10:10

Raghuram


After further investigation it appears that I have the same problem as in this question:

Maven not picking JAVA_HOME correctly

The solution thanks to @rustyx (please upvote that answer):

To fix the issue you need to start Eclipse using the JRE from the JDK by adding something like this to eclipse.ini (before -vmargs!):

-vm
C:\<your_path_to_jdk170>\jre\bin\javaw.exe
like image 42
lexicore Avatar answered Oct 05 '22 08:10

lexicore


the pom for com.sun.xml.bind:jaxb-osgi:jar:2.2.10 is invalid issue. worked for me after updating the rest-assured version to 4.1.1.

like image 24
VRM Avatar answered Oct 05 '22 08:10

VRM