2009-06-16 12 views
29

Ich habe ein Java-Programm mit Maven seine Abhängigkeiten verwalten. Eine dieser Abhängigkeiten ist ein JNI-Wrapper für ein anderes Programm. Maven kümmert sich um den Verweis auf die relevante JAR-Datei, aber ich bin selbst mit der DLL-Datei herumgespielt.Verwalten von DLL-Abhängigkeiten mit Maven

Gibt es eine gute Möglichkeit, Maven die DLL auch behandeln zu lassen? Idealerweise möchte ich, dass die DLL wie die JAR-Datei in unser lokales Repository geladen wird.

Antwort

32

Haben Sie so etwas wie dieses versuchen:

<dependency> 
    <groupId>com.foo</groupId> 
    <artifactId>footron</artifactId> 
    <version>4.2</version> 
    <scope>runtime</scope> 
    <type>dll</type> 
</dependency> 

Sie sie mit so etwas wie dieses Repository zu Maven hinzufügen:

mvn install:install-file -Dfile=footron.dll -DgroupId=com.foo -DartifactId=footron -Dversion=4.2 -Dpackaging=dll -DgeneratePom=true 

Lassen Sie sich diese nicht für DLLs gemacht, aber so etwas wie dies funktionieren sollte .

+0

Eigentlich, nachdem ich etwas mehr Zeit damit verbracht habe darüber nachzudenken, entschied ich, dass es sich lohnte, in die Bemühungen zu investieren, die Notwendigkeit für die DLL via JNI zu beseitigen. Wahrscheinlich lohnt sich die Mühe auf lange Sicht. Ich werde Ihren Vorschlag aus Neugierde untersuchen. – Kris

+3

@Kris, das ist wahrscheinlich eine gute Idee. Ich dachte darüber nach, das zu empfehlen, aber ich mache es mir nicht zur Gewohnheit, den Leuten zu sagen, dass sie den Code, den ich nicht gesehen habe, korrigieren sollten. AKA, Psychische Code Überprüfung – sal

+1

@sal, also hat die Verwaltung der .dll-Datei Maven verwalten automatisch System.loadLibrary ()? Oder müssen Sie noch System.loadLibrary () aufrufen? Ich wundere mich nur, wie ich sicherstelle, dass DLL für andere Objekte geladen ist zu verwenden. –