# [maven] dll-resource einbinden - library.path setzen



## dermoritz (8. Dez 2010)

in meinem Projet habe ich eine abhängigkeit zu einem Artefakt (jnotify), welches selbst dll-Dateien benötigt. Das artefakt selbst zu deployen ist kein Problem, aber was mache ich mit den dll's?

Zunächst würde es mir reichen wenn ich diese einfach unter "Resources" ablegen könnte und es dann laufen würde, aber das geht nicht - wenn man das Programm startet findet er die dll nicht im "library.path". Nun wäre die Frage ob ich diesen Pfad per maven setzen kann (/lib) und dieser Ort auch relativ zur jar-Datei aufgelöst wird. 
Denn im Moment werden ja alle Resourcen in die jar-Datei verpackt - eben auch der /lib-Ordner. Ich fände es auch nicht schlimm falls der lib-Ordner außerhalb der jar-Datei wäre und der library.path entsprechend stimmen würde.

Aber wie geht das?

Am allerschönsten wäre es natürlich wenn ich die libraries ins nexus deployen könnte und sie dann per dependency einbinde. Das Problem ist nur, das nexus die Artefakte umbenennt - entweder nach ihrer ArtefaktID oder nach ihrem classifier oder version. Was kann man da machen?


----------



## kama (8. Dez 2010)

Hallo,

schau dir mal das maven-nar plugin auf github an...das kann solche Abhängigkeiten etc. handhaben...

Gruß
Karl Heinz Marbaise


----------



## dermoritz (9. Dez 2010)

Danke,

aber das hatte ich mir gestern schonmal angeschaut, nun hab ich nochmal genauer hingesehen. Das Teil ist glaube dafür um native Bibliotheken zu kompilieren und korrekt einzubinden.
Mein Fall ist ja viel primitiver (und dazu hab ich da nix gefunden): ich will einfach eine Resource (in meinem Fall eine dll) in ein Projekt einbinden und damit die dll gefunden wird muss der library.path entsprechend gesetzt werden.


----------



## Guest2 (9. Dez 2010)

Moin,

welchen java.library.path?

Von der IDE? Von der Kommandozeile? Von Windows? Von Linux? Auf Deinem Rechner? Auf dem Rechner vom Nutzer? Von Surefire? Da gibt es viele. 
Und so richtig Zugriff hat Maven auf keinen von diesen.

Vgl. z.B.: http://www.java-forum.org/ides-tools/108231-maven-native-libs.html

Gruß,
Fancy


----------



## dermoritz (10. Dez 2010)

genauso wie es einen "classpath" gibts wohl einen Librarypath - z.B. ist bei Windows immer win/system32 dabei. Der aktuelle Ordner ist z.B. auch immer dabei. Deshalb würde es mir reichen, wenn die dll nebem die jar kopiert würde - das kann doch nicht so schwierig sein - mit dem aktuell verwendeten shade plugin?

am liebsten würde ich ja das one-jar plugin verwenden - das hat z.b. eine Option für "bin Libraries" aber das krieg ich nicht zum laufen (http://www.java-forum.org/deploymen...zen-gleichbenannte-verschiedene-resource.html)

den library-path selbst kann man wohl nicht zur Kompilierzeit ändern - ist wohl ein vm-Parameter. Deshalb geht das z.B. aber beim sure-fire-plugin.


----------

