2016-11-29 7 views
0

Ich habe diese [Multi-Modul Maven] Projekt mit einem Bündel von Binär-Dateien in seinem lib OrdnerJava: Kann LD_LIBRARY_PATH auf den Klassenpfad zugreifen?

enter image description here

, die ich durch Maven laden, indem LD_LIBRARY_PATH Einstellung:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <!--<forkMode>true</forkMode>--> 
       <useSystemClassLoader>true</useSystemClassLoader> 
       <environmentVariables> 
        <LD_LIBRARY_PATH>${basedir}/lib/</LD_LIBRARY_PATH> 
        <DYLD_LIBRARY_PATH>${basedir}/lib/</DYLD_LIBRARY_PATH> 
       </environmentVariables> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Ich möchte um diese Binärdateien loszuwerden (und sie nicht im Repo zu überprüfen), indem Sie sie als Java-Abhängigkeit einbeziehen. Also habe ich eine JAR-Datei, diese Binärdateien und hinzugefügt als eine Abhängigkeit enthalten:

enter image description here

Nein, ich bin nicht sicher, wie LD_LIBRARY_PATH einstellen auf diese Dateien zu verweisen. Ich habe ein paar Varianten ausprobiert, aber für alle beschwert sich die Bibliothek, dass sie diese Binärdateien nicht gefunden haben.

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <!--<forkMode>true</forkMode>--> 
       <useSystemClassLoader>true</useSystemClassLoader> 
       <environmentVariables> 
        <LD_LIBRARY_PATH>lib/</LD_LIBRARY_PATH> 
        <DYLD_LIBRARY_PATH>lib/</DYLD_LIBRARY_PATH> 
       </environmentVariables> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Wohin gehe ich falsch?

Antwort

1

Sie haben die Forking-Anweisung auskommentiert. Sobald Ihre JVM ausgeführt wird, können Sie sie nicht mehr rückwirkend konfigurieren.

Die Konfiguration der Ladepfade ist nicht dynamisch, daher wird die JVM zum Ausführen von Maven nicht mit LD_LIBRARY_PATH und anderen Anweisungen aufgerufen. Ohne die Forking-Richtlinie wird keine neue JVM gestartet, so dass diese Richtlinie effektiv nichts bewirkt.

Wenn Forking aktiviert ist, werden die gestarteten untergeordneten JVMs wie von Ihnen angegeben konfiguriert, sodass sie das erwartete Verhalten aufweisen.

Da Sie dachten, diese Elemente würden geladen werden, basiert der Rest Ihrer Frage auf einer falschen Prämisse. Sie könnten das Forking-Problem besser beheben, die neuen (wahrscheinlich) neuen Probleme in der neuen Umgebung erneut beschreiben und dann neu beschreiben.

Verwandte Themen