2013-03-07 11 views
6

Ich benutze Maven, um meine Projekte zu definieren. Eine meiner Abhängigkeiten benötigt zur Laufzeit eine native DLL und wird daher in Tests und zum Debuggen benötigt. Die systemeigene DLL ist an einem bekannten Speicherort verfügbar. Ich möchte eine Lösung, die ich einmal einchecken kann und die für alle Entwickler ohne manuelles Setup von jedem Entwickler funktioniert.Wie kann ich den von Eclipse verwendeten java.library.path aus einem POM setzen?

Ich weiß, dass ich den java.libary.path manuell in "run configurations" einstellen kann, wodurch es die native DLL finden kann, aber dies erfordert eine manuelle Einrichtung für jeden Entwickler.

Ich weiß, ich kann auch die java.library.path für eine bestimmte Projektabhängigkeit festlegen, aber auch dies ist lokal für einen bestimmten Entwickler.

Endlich weiß ich, dass ich das surefire-Plugin festlegen kann, um den java.library.path anzugeben, aber das ist nur für Tests nützlich, die über maven ausgelöst werden - also ist es großartig für unseren Build-Server, aber nicht für Entwickler, die JUnit verwenden Runner in Eclipse, oder Debuggen oder Ausführen von Code direkt aus Eclipse.

Gibt es einen Ausweg?

Antwort

5

Ich habe festgestellt, dass der Eclipse m2e-Stecker, der mit der maven-nativedependencies-plugin geht, dies zu beheben scheint.

Nach der mavennatives docs:

Seit der Version 0.0.7 der Maven-nativedependencies-Plugin, wenn Sie m2eclipse installiert haben und die nativedependencies konfigurieren Plugin die Eingeborene Auspacken automatisch ausgeführt wird, Sie don Ich brauche das Eclipse-Plugin, um sie zu entpacken. Um jedoch die Umgebungsvariablejava.library.path in Eclipse einzurichten, müssen Sie entweder manuell oder automatisch mit dem Eclipse-Plugin tun.

Das Eclipse-Plugin ist eine Erweiterung m2eclipse, es erkennt, wenn Sie haben das Maven Plugin konfiguriert, und wenn Sie das tun führt es die von Eingeborenen Auspacken und konfiguriert die Mutter Bibliothek Standort.

Wenn Sie ein Maven-Projekt importieren, die die mavennatives Plugin konfiguriert hat, und Sie haben die m2eclipse Integration Plugin, auf Import die Eingeborenen werden, auch extrahiert werden, wenn ein sauberes von Durchführung die Eingeborenen eclipse extrahiert werden.

Also, wenn Sie diese beiden Tools verwenden, erfordert die Verwendung von nativen Abhängigkeiten keine manuelle Konfiguration , außer was in der Pom ist, führen Sie einfach Ihre App und es funktioniert.

Wenn ich den Stecker installiert ist, und mavennatives meinem POM hinzufügen möchten, dann laden Sie die pom (Rechtsklick auf Projekt im Paket-Explorer> Maven> update-Projekt), das „native Bibliothek Lage“ des Projekts ist besiedelte automatisch (das zu sehen, direkt am Projekt klicken> Eigenschaften> Java-Build-Pfad> Bibliotheken> native Bibliothek Standort)

enter image description here

Dies scheint für das Debuggen, JUnit runner zu arbeiten usw.

Es erfordert, dass jede Entwicklung loper installieren Sie das Plugin, das manuell ist (so manuell wie die Installation von Eclipse); Mindestens einmal installiert, sobald es für alle/alle nativen Dependenzen funktioniert, die für Mavennatives über ein POM konfiguriert sind.

2

Die Properties Maven Plugin kann Ihnen helfen, die Systemeigenschaften zu übergeben, indem Sie properties:set-system-properties verwenden, um Systemeigenschaften festzulegen.

Das Beispiel sollte wie folgt aussehen werden: -

<properties> 
    <java.library.path>some/path</java.library.path> 
</properties> 

Ich hoffe, dass dies helfen kann.

+0

Ich glaube nicht, dass es hilft. Ich habe bereits einige Eigenschaften in meinem POM. Das Problem ist, dass Eclipse oder der JUnit-Runner sich ihrer bewusst werden. Das Dokument, das Sie für 'set-system-properties' verknüpfen, besagt, dass" ein Maven 2.0-Projekt ausgeführt werden muss ". - Ich glaube nicht, dass dies geschieht, während der JUnit Runner gerade ausführt. – bacar