Ich baue eine ausführbare Jar über das Spring-Boot Maven-Plugin. Ich muss eines der abhängigen Jar entpacken, damit XML-Dateien zur Laufzeit richtig gelesen werden können. Ich folgte der Dokumentation bezüglich des Entpackens von Bibliotheken. Mein Plugin Config ist wie folgt:Spring Boot requiresUnpack lädt nicht zur Laufzeit
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<requiresUnpack>
<dependency>
<groupId>com.deep6analytics.pipeline</groupId>
<artifactId>pipeline-services-ctakes</artifactId>
</dependency>
</requiresUnpack>
</configuration>
</plugin>
</plugins>
ich den Inhalt des Glases überprüft und bestätigt, dass die Packungsinformation im Glas codiert wurde:
$ zipnote target/pipeline-apps-annotation-server-1.0-SNAPSHOT.jar | grep -C 1 UNPACK
@ BOOT-INF/lib/pipeline-services-ctakes-1.0-SNAPSHOT.jar
UNPACK:1e6eda0ca9f1b740c4aba6058cac74a5084f1706
@ (comment above this line)
Gemäß der Dokumentation, zur Laufzeit, erwartete ich um zu sehen, ein "spring-boot-libs" Verzeichnis in meinem $ TMPDIR:
Geben Sie jede Bibliothek als < Abhängigkeit > mit einem <groupId> und eine <artifactId> und sie werden zur Laufzeit in $ TMPDIR/spring-boot-libs entpackt.
Wenn ich jedoch die Anwendung ausführen, überprüfe ich die $ TMPDIR und sehe das entpackte Verzeichnis nicht. Als Folge versagt meine Anwendung zu starten:
ls -la $TMPDIR
drwxr-xr-x 3 staff 102 Aug 10 23:40 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-96fe7360-b23b-4caa-a2ce-75aa0300a417
drwxr-xr-x 3 staff 102 Aug 10 23:27 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-a06a2373-0694-42e9-bee1-29191b3b764a
drwxr-xr-x 4 staff 136 Aug 10 20:54 sp_update
drwx------ 2 staff 68 Aug 10 11:30 ssh-azEJDYkZH6ho
drwxr-xr-x 3 staff 102 Aug 10 15:05 tomcat.104726406473930572.8085
drwxr-xr-x 3 staff 102 Aug 10 23:38 tomcat.1527552147767629466.8080
drwxr-xr-x 3 staff 102 Aug 10 23:13 tomcat.1546871599966723864.8080
Sieht jemand, was ich falsch mache, oder bin ich Missverständnis etwas?
Ok - Ich dachte auch, dass das Glas würde "explodiert", so dass jede der Ressourcen innerhalb der Jar wie eine Datei auf der Festplatte residieren würde. Eine gewisse Klarheit darüber, was "Entpacken" eigentlich bedeutet, wäre hilfreich. Als eine Folge auf - wie extrahiere ich die Ressourcen innerhalb der Jar in das Dateisystem, so dass sie direkt lesen können? –
Ich bin nicht sicher, warum Sie es tun möchten, aber Sie können auf eine Ressource über ClassLoader.getResourceAsStream() zugreifen und dann in eine Datei schreiben. Sie können dies ohne den Zwischen-Entpackungsschritt tun, obwohl –
Leider verwende ich eine Infrastruktur, die durch verschachtelte XML-Dokumente recurses - es geht davon aus, dass alle enthaltenen Dokumente im Dateisystem befinden. Also kann ich nichts tun, um diese Tatsache zu ändern. Kurz gesagt, ich brauche diese Dateien aus dem Glas gezogen und auf dem Dateisystem platziert. –