2013-03-04 5 views
16

Ich habe eine Maven-Abhängigkeit, die zur Laufzeit eine DLL benötigt. Was ich tun möchte, ist einfach diese DLL in resources/lib Ordner zu haben und seine DLLs in das Verzeichnis target zu legen. So was habe ich getan ist:maven-surefire-plugin, DLLs und java.library.path

  1. Added DLLs src/main/resources/lib
  2. pom.xml Modified Argument verwenden -Djava.library.path = $ {basedir}/lib wie so:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <forkMode>once</forkMode> 
         <workingDirectory>target</workingDirectory> 
         <argLine>-Djava.library.path=${basedir}/lib</argLine> 
        </configuration> 
    </plugin> 
    

Allerdings bin ich nach wie vor Laufzeitfehler bekommen, dass DLL nicht in java.library.path ist.

+0

Hat meine Antwort Ihre Frage nicht gelöst? – carlspring

+0

Nicht wirklich :(Ich erinnere mich, dass ich eine andere Lösung verwendet habe (also habe ich dieses Plugin nicht wirklich benutzt). Ich verstehe, dass Sie möchten, dass ich Ihre Antwort akzeptiere, aber ich kann mich nicht erinnern. Vorschläge? – Xorty

+0

Nein ... versteh mich nicht falsch, es ist nur so, dass die Leute weitermachen - ich stimme ab und zu, ich komme zurück, um es zu überprüfen, ist es eine ungelöste Frage und so frage ich mich, auf welche Weise es nicht funktioniert hat Dies ist eines dieser seltsamen Fallszenarien) ...? – carlspring

Antwort

15

Ihr <argLine/> zeigt auf einen falschen Pfad. Versuchen Sie stattdessen:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <forkMode>once</forkMode> 
     <workingDirectory>target</workingDirectory> 
     <argLine>-Djava.library.path=${basedir}/src/main/resources/lib</argLine> 
    </configuration> 
</plugin> 

Wenn diese DLL nur für Tests verwendet werden, sollten Sie es unter src/test/resources setzen. In diesem Fall wird der Pfad <argLine/> in ${project.build.directory}/test-classes geändert.

+2

Leider hat das nicht geholfen.Wenn ich den Wert des Pfades wie "System.getProperty (" java.library.path ") untersuche;" kann ich immer noch nicht sehen gewünschte DLL. Weitere Ideen? – Xorty

+0

Versuchen Sie, übergeben in der Eigenschaft als 'wie hier gezeigt: http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html #systemPropertyVariables – carlspring

+0

Hier finden Sie weitere Details und stellen Sie sicher, dass Sie eine Version verwenden, die neuer als 2.8 ist. http://jira.codehaus.org/browse/SUREFIRE-634 – carlspring

Verwandte Themen