2016-04-19 5 views
1

Eine Multi-Modul Mutter POM erklärt den folgenden BOM Import importiert zu finden:Wie eine Maven Abhängigkeit Version Deklaration von einem BOM

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>io.spring.platform</groupId> 
     <artifactId>platform-bom</artifactId> 
     <version>${spring.io.platform.version}</version> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 

Dann wird ein Modul POM deklariert eine Hibernate Abhängigkeit:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
</dependency> 

Wie finde ich heraus, mit der Maven-Befehlszeile oder IntelliJ, wo die effektive Hibernate-Version definiert ist?

Lauf mvn dependency:tree gegen meinen Modul ergibt:

... 
[INFO] +- org.hibernate:hibernate-core:jar:4.3.11.Final:compile 
... 

die nicht gerade hilfreich ist, weil es nicht anders aussieht, als wenn ich die Hibernate Version selbst verwaltet. Wenn Sie dies tun müssen manuell

Sie
  • Start bei platform-bom-2.0.3.RELEASE.pom, Suche nach Hibernate -> nichts
  • an ihre Mutter gehen spring-boot-starter-parent-1.3.3.RELEASE.pom, für Ruhesuch -> nichts
  • gehen zu seine Elternteil spring-boot-dependencies-1.3.3.RELEASE.pom, suche nach Hibernate -> endlich ...

Aber was für eine Tortur. Natürlich könntest du http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions überprüfen, aber sollte diese Information Maven nicht alleine finden können?

Antwort

0

Laut How do I show the Maven POM hierarchy? sieht es aus wie es mit einem einfachen Befehl nicht möglich ist.

Sie sollten Ihr eigenes Plugin oder Skript schreiben, um die Hierarchie nach oben zu klettern und finden Sie das Artefakt Sie interessiert sind

Kleiner Tip. Die Version eines Artefakts holen Sie verwenden, Sie kann die pom.xml im Idea Editor öffnen und halten Ctrl während schwebt auf der artifactId, und der vollständige Name seiner POM wird angezeigt, mit seiner Version.

1

Es gibt zwei Dinge. Zuerst gibt die Ausgabe von dependency: tree aus, was das Endergebnis ist. Die Frage hier ist, warum Sie es nicht glauben? Und warum schaffen Sie die Version selbst, wenn Sie eine Stückliste verwenden ...

Abgesehen davon, dass Sie konnten verwenden:

mvn help:effective-pom 

Und wenn Sie ein bisschen besser suchen, als Sie die following pom file kommen die enthält die Versions Definition wie folgt:

<hazelcast.version>3.5.5</hazelcast.version> 
<hibernate.version>4.3.11.Final</hibernate.version> 
<hibernate-validator.version>5.2.4.Final</hibernate-validator.version> 
<hikaricp.version>2.4.3</hikaricp.version> 
<hikaricp-java6.version>2.3.13</hikaricp-java6.version> 
<hornetq.version>2.4.7.Final</hornetq.version> 

, die genau die Version sind, die bereits durch die Abhängigkeit ausgedruckt wird: Baum.

+0

Danke, aber all das ist in meinem Q bereits. Ich habe nie gesagt, dass ich nicht glaube, was "Abhängigkeit: Baum" gedruckt hat, und ich habe nie gesagt, dass ich die Version selbst verwaltet habe. Das Q ist "wo die effektive Hibernate-Version definiert ist". Außerdem listete ich das POM auf, das Sie auch erwähnt haben. Der Punkt ist, was Sie als "Suche ein bisschen besser" sagen, ist IMO eine Tortur. Ich habe erwartet, dass Maven mir sofort sagen kann, wo die Version definiert ist (d. H. In welchem ​​POM). –

+0

Klingt wie eine gute Idee für maven-dependency-plugin oder jedes andere Plugin, das ein solches Problem lösen kann ... – khmarbaise

1

In Eclipse, wenn Sie die Pom im XML-Format (dh in der "pom.xml" Registerkarte, nicht die "Übersicht" Registerkarte), einfach den Mauszeiger über den Namen des Artefakts und ein Pop-up erscheint mit der effektiven Version und der Ort, an dem es definiert ist.

enter image description here

Verwandte Themen