2013-03-04 15 views
16

Ho una dipendenza Maven che richiede una DLL in fase di esecuzione. Quello che voglio fare è semplicemente avere quella DLL nella cartella resources/lib e posizionare le sue DLL nella directory target. Così Cos'hai ho fatto è:maven-surefire-plugin, DLL e java.library.path

  1. Aggiunto DLL per src/main/resources/lib
  2. Modificato pom.xml usare argomento -Djava.library.path = $ {} basedir/lib in questo modo:

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

Tuttavia ancora sto ottenendo errore di runtime che DLL non è presente in java.library.path.

+0

La mia risposta non ha risolto la tua domanda? – carlspring

+0

Non proprio :(Ricordo che ho usato una soluzione diversa (quindi non ho davvero usato questo plugin). Capisco che vorresti che io accettassi la tua risposta, ma non ricordo davvero. Suggerimenti – Xorty

+0

Oh, no ... non fraintendermi, è solo che le persone continuano a votare, ogni tanto torno a controllarlo, è una domanda irrisolta e quindi mi chiedo in che modo non ha funzionato, (perché questo è uno di quegli scenari di casi angolari particolari) ...? – carlspring

risposta

15

Il tuo <argLine/> indica un percorso errato. Prova a modificare:

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

Se verrà utilizzata questa DLL solo per i test, si dovrebbe mettere sotto src/test/resources. In tal caso il percorso <argLine/> passerà a ${project.build.directory}/test-classes.

+2

Purtroppo non è stato d'aiuto. Quando ispeziono il valore del percorso come "System.getProperty (" java.library.path ");" Non riesco ancora a vedere il DLL desiderata. Altre idee? – Xorty

+0

Prova a passare la proprietà come '' come mostrato qui: http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html #systemPropertyVariables – carlspring

+0

Controlla qui per maggiori dettagli e assicurati di utilizzare una versione più nuova di 2.8. http://jira.codehaus.org/browse/SUREFIRE-634 – carlspring

Problemi correlati