Maven ou Gradle (ou autre) ?

Quel gestionnaire de compilation Java pour lier une bibliothèque C++ avec CMake?

a marqué ce sujet comme résolu.

Bonjour à tous!

Dans le cadre de mon projet chemfiles (lien vers le site, et la présentation sur ce forum), je suis en train d'écrire un binding Java utilisant JNA du coté Java pour appeler des fonctions C dans une bibliothèque dynamique.

Pour faire court, c'est une bibliothèque C++ avec une interface C qui est utilisée pour proposer des interfaces dans plusieurs autres langages.

Pour l'instant, les différentes interfaces utilisent soit le gestionnaire de paquets/outil de compilation standard du langage (pip, Pkg.jl, cargo), soit CMake. La bibliothèque C++ utilise CMake pour la compilation.

Je cherche donc quel outil utiliser pour cette version Java pour que les utilisateurs ne soit pas déroutés à l'utilisation. J'ai besoin d'un outil capable de compiler mon code java en ligne de commande (je n'utilise pas d'IDE, et je ne veux pas imposer un IDE), et de lancer la compilation de la bibliothèque C++ via CMake. J'ai un prototype avec Maven ici, qui fonctionne pas trop mal. Mais en regardant sur Internet, il me semble que Gradle est plus utilisé aujourd'hui, en particulier pour les projets sur la JVM mais pas en Java, et pour Android. Toutefois, la seule manière de compiler du code C++ avec CMake que je trouve pour gradle semble liée au NPK Android, et pas utilisable pour le desktop. Les questions que je me pose sont donc:

  • Quel est le gestionnaire de compilation qui permettra au plus de monde d'utiliser mon projet, en étant à l'aise?
  • Si la réponse à la question précédente est gradle, comment puis-je intégrer la compilation de code C++ avec Cmake dans un projet gradle? Il serait possible de juste lancer les deux commandes nécessaires (cmake source/dir, cmake build/dir --build --config release) depuis une règle gradle personalisée, est-ce la meilleure manière de faire?

Merci pour tous vos avis!

+0 -0

Quel est le gestionnaire de compilation qui permettra au plus de monde d'utiliser mon projet, en étant à l'aise?

Je dirais Maven, qui bénéficie d'un vaste écosystème et d'une base d'utilisateur plus large je pense. Ceci venant probablement du fait qu'il est plus mature (vieux) que Gradle.

A titre informatif, j'ai récemment dû convertir un projet Android sous Eclipse en projet Gradle + Android Studio, et j'ai trouvé ça extrêmement laborieux (build non reproductible par exemple). Je ne sais pas si le problème vient de Gradle, d'Android Studio ou de moi tout simplement, mais ça m'a suffisamment gonflé pour me dégoûter et que je passe sur un autre truc.

Du coup ma réponse est probablement influencée par cette mauvaise expérience :)

Salut,

Pour ma part, si j'avais le choix, je me tournerais vers Ant.

Je m'explique:

Pour ma part, Gradle et Maven m'ont également fait passer de très mauvais moments; Bien qu'ils soient tous deux très puissants, dès qu'une dépendance n'est pas hébergée (du moins pour maven) sur un serveur nexus, c'est très laborieux pour linker un malheureux .jar… Maven n'est pas verbeux du moment que tes dépendances sont hébergées online, sinon tu te retrouves très vite avec un gros fichier xml imbuvable et pas pratique du tout.

Ant est verbeux, mais il ne t'empêche absolument pas de gérer correctement ton manifest.

Bon cela reste un avis très personnel, peut-être que tu sauras t'en servir correctement, pour ma part je ne les conseille pas. (aucun des deux)

Bonne soirée ! :)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte