Ant est-il toujours dans le «courant dominant» des versions Java?

14

Nous remplaçons lentement les fichiers de commandes par lots (windows .bat) qui bousculaient simplement les classes compilées dans l'IDE des développeurs, avec des versions Ant plus complètes (c.-à-d. Obtenir de CVS, nettoyer la compilation, jar, archive, email, etc.)

J'ai passé beaucoup de temps à apprendre (et à déboguer les problèmes) avec Ant, donc je suis plus à l'aise de l'utiliser pour ces tâches. Mais je me demande si Ant est toujours aussi répandu qu'il l'était lorsque j'ai commencé à apprendre, ou si "le monde est passé" à quelque chose de plus récent (et peut-être plus lisse). (J'ai commencé à voir plus de choses de construction Maven distribuées, que je n'ai jamais utilisées, par exemple.)

L'importance pratique de cette question est de savoir si j'encourage les nouveaux développeurs à apprendre Ant , ou s'ils devraient apprendre autre chose pour les builds?

Je ne suis jamais trop au courant des tendances, donc ce serait formidable d'entendre d'autres développeurs Java ce qu'ils pensent être le meilleur outil de construction et ce qu'ils pensent que les nouveaux développeurs devraient apprendre.

Sam Goldberg
la source
Lisez toutes les réponses ci-dessous et elles étaient toutes géniales! Merci pour les informations sur les améliorations que Maven offre par rapport à Ant. J'examinerai Maven.
Sam Goldberg
Ce sont très peu de projets qui sont assez simples pour ne pas nécessiter des tonnes de scripts pour ant. Maven gère beaucoup de ces choses de manière standard.
Ant est fondamentalement un script shell en XML (et utilise des commandes Ant au lieu de commandes shell).
user253751
Ant est une perte de temps incroyable. Même lorsque Maven était terrible, c'était un choix plus intelligent. Ant n'a aucun moyen d'être intégré dans un IDE et les projets Java sont un énorme fouillis de fichiers - vous passez 30% de votre temps à sauter d'un fichier à l'autre.
bryan hunt
@bryanhunt: nous avons fini par utiliser Maven pour tous les nouveaux projets. Cependant, je n'ai pas trouvé de moyen intéressant pour Maven de créer un package de déploiement pour les applications Java. (C'est bien pour copier les dépendances, télécharger le pot.) La plupart des articles que j'ai lus répondent à la façon de le faire, par exemple utiliser le plugin Ant. Je trouve donc que j'utilise Ant pour améliorer la sortie finale de Maven. Et il semble beaucoup plus facile de le faire dans Ant que d'utiliser le plugin Maven Assembly.
Sam Goldberg

Réponses:

23

Je suis d'accord avec les autres ici que Maven semble avoir repris les projets les plus importants que j'ai examinés.

Bien qu'Ant soit très flexible, le fichier de génération n'est pas standardisé, donc lorsque vous passez à un nouveau projet ou une nouvelle entreprise, les cibles sont nommées différemment, le fichier est structuré différemment, les dépendances inter-cibles peuvent ou non être établies, etc.

Avec Maven, vous bénéficiez également de l'avantage de ne pas avoir à transporter de dépendances binaires (je parle de jars) dans votre système SCM. Beaucoup d'autres excellents outils Java savent lire un fichier Maven POM (l'avantage de la normalisation), donc des outils comme les IDE peuvent configurer un projet Maven très rapidement, et des outils de construction comme Jenkins peuvent facilement exécuter des builds Maven.

RonU
la source
13
Je dois également ajouter que l'utilisation de Maven rend nos projets IDE-agnostiques, et si vous avez déjà été dans une boutique qui a connu des guerres IDE, vous pouvez apprécier d'éliminer cette bataille religieuse!
RonU
11

J'ai travaillé avec Ant et avec Maven. D'après mon expérience, Maven a un avantage très fort sur Ant.

  • Tous les projets que j'ai vus depuis 2 ou 3 ans semblent utiliser maven. Il y a environ 3 ans, cela m'a fait me demander parce que les versions de maven utilisées à l'époque (2.0.quelque chose) semblaient assez peu fiables et boguées. À un moment donné (2.1 ou 2.2, je ne me souviens pas), maven est devenu fiable et après un certain temps, j'ai changé d'avis. Maintenant, je serais plutôt surpris de voir quelqu'un qui préfère la fourmi à Maven.

Sur une note moins positive à propos de maven, mon expérience avec sa documentation n'était pas si grande jusqu'à présent. Je pense avoir vu un produit avec une documentation pire que celle de maven mais je ne me souviens pas lequel (une ancienne bibliothèque CSV iirc).

moucheron
la source
2
Je sais pas, j'ai trouvé la référence Maven assez décente. Ce n'est pas parfait, et il y a des coins sombres sans papiers, mais à mon humble avis, il est nettement meilleur que la moyenne.
Péter Török
@ PéterTörök droit Maven Reference est aussi mon premier secours. D'une manière ou d'une autre, la plupart des choses qui m'inquiètent se retrouvent dans ces coins sombres et sans papiers . Pour être précis, je trouve ces coins plus "sombres" que "non documentés" - je veux dire que je sens que les connaissances sont là mais je n'arrive pas à les déchiffrer. Je ne sais peut-être pas que je suis malchanceux. Ou peut-être stupide. Ou peut-être que les gars de Maven n'ont tout simplement pas d'écrivain technique décent dans leur gang
moucher
1
Pourquoi, avez-vous déjà vu un projet open source qui avait un écrivain technique décent? ;-)
Péter Török
@ PéterTörök si vrai! :) Le luxe des projets OSS populaires est qu'il y a beaucoup de gars experts qui "remplacent" le rédacteur de doc. Pour moi, c'était le cas avec Maven - il y a toujours eu un gourou autour duquel je pouvais poser des questions sur des choses délicates
moucher
3

Nous utilisons Maven depuis plusieurs années. Il prend en charge les scripts Ant (tout comme Ant prend en charge BeanShell), donc vos connaissances Ant peuvent toujours être utiles. Maven est beaucoup plus puissant, mais il a des exigences d'infrastructure supplémentaires (vous voudrez un serveur Artifactory ou Nexus pour héberger vos builds si vous partagez des composants entre plusieurs projets). C'est également très différent de Ant, vous ne pouvez donc pas tirer parti de beaucoup de vos connaissances existantes.

TMN
la source
1

Je pense que la fourmi seule est morte dans l'eau; avoir à spécifier manuellement toutes vos dépendances de chemin de classe (en fonction de votre configuration) est beaucoup trop manuel et très sujet aux erreurs. Si Ant est utilisé aux côtés d'un outil de gestion des dépendances, comme Ivy, il conserve sa puissance et supprime la nécessité de gérer manuellement vos dépendances.

L'autre problème avec Ant par rapport à Maven est le manque de standardisation, qui a été mentionné dans d'autres réponses. Lors du passage d'un projet à un projet ou d'un travail à un autre, l'une des choses les plus ennuyeuses que je trouve est d'apprendre le nouveau standard pour les différents fichiers Ant. L'objectif de Maven de convention sur la configuration signifie que deux projets différents auront une structure très similaire, ce qui rend la transition entre eux beaucoup plus facile qu'avec Ant.

Quant à savoir si Ant est toujours dominant ou non, cela dépendra de l'environnement de développement dans lequel vous travaillez. Si le projet est dans une petite entreprise ou une start-up, j'imagine que Maven serait le choix naturel et le temps peut être pris d'investir dans l'infrastructure, comme une Artifactory. Cependant, les grandes entreprises auront investi de nombreuses années et beaucoup d'argent dans leur infrastructure Ant (configurations, fichiers de construction globale, etc.), ce qui signifiera qu'elles seront moins enclines à s'éloigner d'une technologie dans laquelle elles ont investi tant d'argent.

Richard
la source
0

Maven est en augmentation depuis de nombreuses années, et maintenant je dois l'apprendre. Les choses changeront toujours, et savoir que Ant perd sa position n'est pas une mauvaise chose.

Maven n'est peut-être que le dernier venu pour peu de temps, mais si cela nous facilite la tâche, il vaut la peine d'investir du temps pour apprendre.

Jon Shanks
la source