Ajout d'une bibliothèque JNI au référentiel Maven local
Je voudrais ajouter une JNI de la bibliothèque, y compris son objet partagé (.donc) fichier de mon projet à l'aide de Maven. Malheureusement, il n'est pas encore sur un dépôt public, donc je suppose que je dois l'installer moi-même sur mon dépôt local pour avoir de travail.
Comment dois-je faire, y compris la partie native dans Maven être regroupés dans mon projet (et, éventuellement, de l'exportation avec le copier-dépendances plugin). C'est une norme d'application J2SE (pas une web-app), avec l'emballage .pot?
La bibliothèque, je suis en train d'ajouter est junixsocketjuste au cas où il est utile de connaître.
Il a une .(bibliothèque native), et le Java .jar composant.
Je suis tombé sur maven-nar-plugin qui semble cibler les indigènes construit, mais semble être plus orienté vers la construction d'un JNI projet de code, plutôt que le regroupement d'un 3ème partie de la JNI de la bibliothèque, et je n'arrive pas à la pièce du puzzle ensemble.
Comment puis-je aller sur:
- L'installation de ces dans mon dépôt local, avoir la .pot en fonction de la .si la bibliothèque.
- Y compris la dépendance (à l' .jar et .donc) dans le fichier POM.
Grâce.
source d'informationauteur jbx
Vous devez vous connecter pour publier un commentaire.
Mon approche:
Mettre
.so
fichiers du référentiel avec plate-forme de classificateur, comme ceci:sqlite3-3.7.9-linux-x86_64.so
.Ajouter
.so
dépendances pour toutes les plates-formes requises:Utiliser cette maven assemblée de configuration des plugins pour mettre toutes les libs dans
lib/native
répertoire de vous dist:Utilisation cette classe à la charge du syndicat sur l'application de démarrage (de la planification à changer classificateur de noms pour GNU triplés):
- Je inclure l' .ainsi, dans le bocal et supplément de la plate-forme partagée de la bibliothèque avant de le charger. De cette manière, il est déployé comme tout autre bocal.
Un exemple d'un projet lorsque cela est fait, avec plusieurs .donc, pour différentes plates-formes est
https://github.com/peter-lawrey/Java-Thread-Affinity
La classe principale à regarder, c'est https://github.com/peter-lawrey/Java-Thread-Affinity/blob/master/src/main/java/com/higherfrequencytrading/affinity/impl/NativeAffinity.java
Comme une alternative à la déballage de vos bibliothèques au moment de l'exécution, vous pouvez les stocker dans des bocaux en Maven, mais les sortir de leur emballage au moment de la construction: http://www.buildanddeploy.com/node/17.
La maven-nativedependencies-plugin plugin va le faire automatiquement pour vous, aussi longtemps que vous suivez leur convention de nommage.