2013-03-04 15 views
16

mam zależność Maven, która wymaga DLL w czasie wykonywania. Co chcę zrobić, to po prostu mieć tę bibliotekę DLL w katalogu resources/lib i umieścić jej biblioteki DLL w katalogu target. Więc what've zrobiłem to:Maven-murowany-plugin, biblioteki DLL i java.library.path

  1. Dodane DLL do src/main/resources/lib
  2. Modified pom.xml użyć argumentu -Djava.library.path = $ {}/lib basedir tak:

    <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> 
    

Jednak nadal pojawia się błąd runtime, którego biblioteka DLL nie jest obecna w java.library.path.

+0

Czy moja odpowiedź nie rozwiązała Twojego pytania? – carlspring

+0

Niezupełnie :(Pamiętam kiedyś inne rozwiązanie (tak naprawdę nie używać tej wtyczki). Rozumiem, że chcesz mi zaakceptować swoją odpowiedź, ale ja naprawdę nie pamiętam. Sugestie? – Xorty

+0

Oh, nie ... nie zrozumcie mnie źle, po prostu ludzie na bieżąco głosują co jakiś czas, a potem wracam, żeby to sprawdzić, czy to jest nierozwiązane pytanie, więc zastanawiam się, w jaki sposób to nie zadziałało, (ponieważ jest to jeden z tych osobliwych scenariuszy narożnik) ... – carlspring

Odpowiedz

15

Twoje <argLine/> wskazuje na niewłaściwej ścieżce. Spróbuj to zamiast:

<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> 

Jeśli DLL będą wykorzystywane wyłącznie do badań, należy umieścić go pod src/test/resources. W takim przypadku ścieżka <argLine/> zmieni się na ${project.build.directory}/test-classes.

+2

Niestety to nie pomogło Kiedy sprawdzać wartość ścieżki jak „System.getProperty (” java.library.path?. „);” nadal nie mogę zobaczyć pożądana biblioteka DLL. Więcej pomysłów? – Xorty

+0

Spróbuj przekazać właściwość jako '' jak pokazano poniżej: http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html #systemPropertyVariables – carlspring

+0

Sprawdź tutaj, aby uzyskać więcej informacji i upewnij się, że używasz wersji nowszej niż 2.8. http://jira.codehaus.org/browse/SUREFIRE-634 – carlspring

Powiązane problemy