Maven et le JOGL bibliothèque?
J'ai étudié Maven dans mon temps libre au cours de la dernière plusieurs jours, mais n'arrive pas à comprendre comment organiser un projet, de sorte que le JOGL bibliothèques sont utilisées. Je voudrais de préférence comme suit:
- Télécharger automatiquement, si nécessaire, le système d'exploitation spécifique de JOGL fichier zip à partir de ici (contient 4 fichiers jar et natif des fichiers de bibliothèque (.so/.dll)); ou dépendent d'un projet Maven qui est un wrapper de l'un des fichiers.
- Décompressez que fichier zip de façon appropriée, de sorte que:
- les fichiers jar sont ajouté au classpath et déployés en tant que de besoin, et
- la bibliothèque native des fichiers sont ajoutés à la dernière fichier jar (serait-ce de leur permettre d'être automatiquement utilisé, ou aurais-je besoin de quelque chose de plus impliqué?)
Je pense qu'une partie de mon problème est que je n'ai pas de bien comprendre l'utilisation de JOGL, où placer les bibliothèques natives lors de l'exécution du code, etc. J'ai besoin de revenir à l'essentiel et d'écrire un JOGL bonjour tout le monde, de le compiler en ligne de commande et l'exécuter à partir de la ligne de commande pour voir exactement cela qu'il faut autant que le répertoire de placement des bibliothèques natives; je peux aller le faire dès maintenant, en fait.
Avec le point 1, j'ai trouvé des OS de fonctionnalités spécifiques; des profils Maven peut être activé en fonction des propriétés du système, qui comprennent le système d'exploitation. Alors, je pouvais activer un profil de Windows qui a une dépendance de la spécifiques à Windows JOGL de la bibliothèque, de même pour le Linux, et les deux ayant un 64 bits alter ego. (Activation officiel docs /officieux de docs.)
J'ai essayé de créer un référentiel basé sur un JOGL fichier jar, puis en ajoutant les JOGL le fichier jar du projet en tant que dépendance de mon projet; la dépendance est téléchargé, mais pas utilisé. Je n'ai aucune idée de l'endroit où le fichier jar qui se passe ou comment l'utiliser, le décompresser, etc. Voici la commande que j'ai utilisé.
Donc, en résumé: JOGL se compose de quatre .les fichiers jar et certaines bibliothèques natives. Comment puis-je intégrer ces fichiers dans mon projet Maven pour que je puisse écrire un JOGL application avec Maven de la manipulation de mon processus de création? En outre, comment puis-je utiliser un autre ensemble de fichiers en fonction du système d'exploitation, parce que bien sûr, les bibliothèques natives et même les .les fichiers jar diffèrent entre Windows, Linux et Mac.
- Par ailleurs, je suis conscient qu'un JOGL 1 projet Maven existe déjà dans le java.net référentiel, et je suis à la recherche d'utiliser JOGL 2 que je ne peux pas trouver un référentiel existant/projet. Vous allez avoir à Google un peu plus profond que ça 🙂
- Avec Apache Ivy ce serait trivial, par la manière. Eh bien, banal dans le sens où une fois que vous apprendre à faire votre propre référentiel pour les dépendances, puis il est trivial de le faire.
Vous devez vous connecter pour publier un commentaire.
Jogamp maintenant contient le support de Maven, pour la jogl composants (jocl et joal soutien est à paraître). Comme d'2.0-rc11, les paquets sont poussés à Maven Central.
Il suffit de mettre ceci à votre pom:
Maven va tirer toutes les dépendances, la prochaine fois que vous essayez de construire le projet.
Lire plus ici sur le wiki
Lorsque vous traitez avec de la JNI et Maven, Projets Avec JNI est la référence il faut commencer avec. Il couvre beaucoup plus que votre problème actuel (qui est "juste" à l'aide d'une bibliothèque qui s'appuie sur la JNI et bibliothèques natives) mais bon, qui peut le plus, peut le moins.
Si vous le lisez attentivement, vous verrez qu'une solution pour utiliser JNI bibliothèques est de les regrouper en spécifique à une architecture Pots de sorte que vous pouvez compter sur eux comme n'importe quel autre dépendance Maven à partir d'un point de vue. C'est en fait la façon dont JOGL version 1.1.1 est emballé dans http://download.java.net/maven/2/net/java/dev/jogl/, il y a un POT d'artefact avec les classes Java et d'architecture spécifique des Pots artefacts avec les bibliothèques natives.
Ensuite, comme l'a expliqué, l'idée est d'utiliser une bibliothèque personnalisée chargeur pour charger la bibliothèque native. La bonne nouvelle, c'est que ce chargeur est "fourni" tel qu'expliqué ci-dessous.
Maintenant, pour répondre à vos questions, comment:
Malheureusement, JOGL 2.0 pots ne sont pas disponibles dans le référentiel de java.net de sorte que vous aurez à traiter avec que et soit de les rendre disponibles dans un repository privé ou de les installer manuellement dans le référentiel local de chaque développeur. Pour ce faire, utilisez
mvn install:install-file
comme indiqué dans le Guide pour l'installation 3ème partie Pots (et pasmvn deploy:deploy-file
comme vous l'avez fait, cet objectif est utilisé pour installer des artefacts à un dépôt distant).Personnellement, je voudrais télécharger JOGL 2.0 Zip de l'URL que vous avez fourni, tout comme ils l'ont fait avec JOGL 1.1.1 (un JAR Java et des Pots pour les bibliothèques natives) et installer les Pots dans chaque référentiel local pour l'instant. Ensuite, déclarer une norme de dépendance sur le Java artefact et, en effet, l'utilisation profils pour l'architecture spécifique dépendance. Quelque chose comme ceci:
N'oubliez pas d'ajouter le dépôt requis pour la coutume de la bibliothèque du chargeur et de la dépendance:
Qui concerne la seconde partie de votre question:
Comme je l'ai expliqué, vous avez réellement ne dépendra pas de fichiers ZIP, mais sur les Bocaux et vous n'aurez pas besoin de les décompresser ni pendant le développement ni la distribution de votre projet. Pour la distribution, vous aurez juste besoin de créer un bocal, y compris les dépendances. Cela peut être fait avec le maven-assembly-plugin. Voir cette réponse par exemple pour plus de détails sur cette.
Il y a un repo maven pour JOGL 2.0 ici: http://jogamp.org/deployment/maven/
- Je utiliser SBT pour la construction de mes projets. Le résolveur, vous devez ajouter à
build.sbt
:Et de la dépendance, par exemple, pour la base de jogl bibliothèque:
Dans maven fichiers xml, ce serait quelque chose comme (selon cette):
Avec dépendance déclaré:
Pour télécharger automatiquement la bonne natif de pot, dans sbt-je faire quelque chose comme:
Je ne sais pas JOGL bibliothèque, mais j'ai de l'expérience avec Java3d, qui a la même installation/construction. Il y a deux façons d'arriver à ceci:
dire aux développeurs d'installer JOGL sans assistance, puis de traiter JOGL les bibliothèques comme des dépendances du système comme nous le faisons avec Java3d
lieu tous les pots et dépendante du système des bibliothèques de dépôt et de créer des pdm pour eux
Si vous fortement souhaitez automatiser avec Maven installation de JOGL vous pouvez essayer d'utiliser maven-antrun-plugin ou créer propre plugin Maven gère l'installation (un bon exemple est Fret qui télécharge les serveurs et le décompresser).
Je envisager d'utiliser la première option - dire aux développeurs d'installer JOGL. Dans notre cas, Java3d application est distribuée en Java WebStart donc, pour eux, l'installation de Java3d est entièrement automatisé par WebStart.
Ici, pour référence, est la partie de mon Ant build.xml fichier qui télécharge et décompresse le JOGL bibliothèque (2.0 beta 10).
ce script va télécharger une version à partir d'une URL et l'installer dans un local (nommé) du référentiel.
https://gist.github.com/1624599
exemple d'utilisation:
./install_jogl_maven http://jogamp.org/deployment/v2.0-rc5 path_to_local_repo 2.0-rc5
Il n'est pas facile à obtenir avec. Essayez si vous le pouvez configurer le maven-assembly-plugin de construire un exécutable jar et le paquet de fichiers corrects avec votre code. Vous ne pouvez pas utiliser maven pour la gestion de la dépendance pour atteindre ce parce que vous avez besoin du contenu ZIP pas le ZIP lui-même. Vous pouvez essayer de le maven ant-plugin.