2016-12-12 1 views
1

Ich erstelle ein OSGI-Paket von einem Maven-Modul mit dem maven-bundle-plugin.Wie identifiziere ich die Quelle einer Paketversion im Manifest, das von maven-bundle-plugin erzeugt wurde?

<plugin> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>maven-bundle-plugin</artifactId> 
    <configuration> 
     <instructions> 
      <Import-Package> 
       * 
      </Import-Package> 
      <Export-Package> 
       my.bundle.packages 
      </Export-Package> 
     </instructions> 
    </configuration> 
</plugin> 

Leider scheint eine Abhängigkeit zu sein, diejavax.annotation aussetzt. Aus diesem Grund enthält das generierte Manifest Import-Package: javax.annotation;version="[3.2,4)"

Wie kann ich herausfinden, welche Abhängigkeit dieses Paket exportiert? Durch die Verwendung von mvn dependency:list konnte ich einige Abhängigkeiten ausschließen (com.google.code.findbugs: Anmerkungen und com.google.code.findbugs: jsr305), aber der Versionsbereich bleibt erhalten. Ich habe in den Manifest-Dateien der direkten Abhängigkeiten gesucht, aber kein anderes jar gefunden, das javax.annotation exportiert.

Hinweis: Ich könnte hinzufügen, eine Abhängigkeit zu javax.annotation: com.springsource.javax.annotation und das Manifest würde javax.annotation Version 1.0.0 korrekt importieren, aber dies sollte nicht notwendig sein, und ich persönlich würde es finden sauberer, um die unbekannte Abhängigkeit auszuschließen.

+0

Welche jar Abhängigkeits enthalten das Paket javax.annotations? –

+0

Keine von ihnen, aber möglicherweise eine verschachtelte Abhängigkeit, die tut. Dieses Paket ist Teil des jdk und zur Laufzeit wird das Quellenquellen-Bundle bereitgestellt. – TomVW

+0

Der 3.x-Bereich des Imports könnte auf den Frühling zeigen, wenn Sie Feder 3.x verwenden. Können Sie Ihren Pom-Inhalt posten? –

Antwort

0

Wie kann ich herausfinden, welche Abhängigkeit dieses Paket exportiert?

Wenn Sie * nix-Konsole und bnd Kommandozeilen-Tool installieren Sie könnten versuchen:

mvn dependency:build-classpath | grep jar | tr ':' ' ' | xargs bnd find -e 'javax.annotation' 

Es ist wahrscheinlich ein besserer Weg, dies zu tun, aber es ist ein Startpunkt

+0

Dies war in gewisser Weise hilfreich. Die Abhängigkeiten, die ich zuvor identifiziert habe, sind die einzigen, die dieses Paket offen legen. Das Manifest gibt jedoch immer noch die falsche Version an. – TomVW

+0

Beeindruckende Kommandozeile! –

+0

Stellt sich heraus, dass ich das Manifest nicht richtig lesen kann. Dieser Befehl half mir, die problematischen Abhängigkeiten zu finden und listet die Jars auf, die das Paket offen legen – TomVW

Verwandte Themen