2017-09-08 5 views
0

Hallo zum Hinzufügen der Bibliotheken von Drittanbietern, ich folgte dem Artikel https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/adding-third-party-libraries-to-a-module#embedding-libraries-in-a-module. Jetzt hat das generierte Paket ein lib-Verzeichnis mit allen Abhängigkeiten, die in build.gradle konfiguriert sind. Beim Bereitstellen des Bundles wird der Status des Bundles installiert. Wenn ich versuche, das Bündel zu starten ich die unten Störung erhalteProblem mit der Bündelung externer Abhängigkeiten in Liferay Dxp Bündel

org.osgi.framework.BundleException: Could not resolve module: com.test..api [564] 
    Unresolved requirement: Import-Package: com.ibm.wsdl.extensions.soap 

Dies ist nicht einmal eine transitive Abhängigkeit für jede meiner Abhängigkeit Gläser, die ich in der build.gradle konfigurierte Können Sie mir bitte helfen, dieses Problem zu beheben .

Antwort

0

Jetzt kann ich mein Bündel starten.

Wenn wir die Abhängigkeiten in der Datei build.gradle konfigurieren und eine Aktualisierung durchführen, lädt gradle alle Abhängigkeiten (einschließlich transitiver Abhängigkeiten). Das Problem liegt bei diesen transitiven Abhängigkeiten. Gradle lädt nicht alle transitiven Abhängigkeiten herunter. Es fehlen ein paar Gläser. Wir müssen fehlende Krüge in build.gradle erneut konfigurieren und eine Aktualisierung durchführen.

Arbeit rund um die fehlenden Gläser zu finden:

Konfigurieren, um die Abhängigkeiten in build.gradle, führen Sie eine gradle neu geladen und die deploy. Gehe zur gogo-Shell und überprüfe das Paket. Jetzt wird das Bundle bereitgestellt und befindet sich im installierten Zustand. versuchen, das Bundle von gogo Shell zu starten. Jetzt erhalten Sie Fehler ähnlich Unresolved requirement:Import-Package: com.poi.extractor google das Paket und versuchen Sie, das jeweilige Glas in Maven Repository zu finden. Konfigurieren Sie das neue Jar in build.gradle. Setzen Sie den Vorgang fort, bis das Bündel aktiviert wird.

0

Fügen Sie das folgende Skript in Ihrem build.grade hinzu, um alle Abhängigkeiten von Drittanbietern in Ihr OSGi-Modul aufzunehmen, anstatt sie manuell nacheinander hinzuzufügen.

bundle { 
def runtime = project.configurations.runtime 
runtime.resolve() 
instruction 'Bundle-ClassPath', '.' 
instruction 'Bundle-Activator', 'com.XXX.XXXXX.XXXX.ClassName' 
runtime.resolvedConfiguration.resolvedArtifacts.each { 
    def resrc = it.moduleVersion.id.name + '-' + 
      it.moduleVersion.id.version + '.jar'  
    instruction 'Bundle-ClassPath', 'META-INF/lib/' + resrc 
    instruction '-includeresource', 'META-INF/lib/' + resrc + '=' + it.file.path 
    } 
} 
Verwandte Themen