Qu'est-ce que tous les outils de construction Java?

Quel est l'intérêt d'utiliser ant, maven et buildr? ne l'utilisez dans eclipse ou netbeans fonctionne bien? je suis juste curieux de savoir quel est le but et les avantages des outils de construction étendus.

31
demandé sur Kristian 2009-09-05 08:11:33

10 réponses

  • Gestion des dépendances : Les outils de génération suivent un modèle de composant qui fournit des conseils sur l'endroit où rechercher les dépendances. Dans Eclipse / Netbeans, vous devez dépendre d'un JAR et vous ne savez pas vraiment si ce JAR a été mis à jour ou non. Avec ces outils de construction, ils "connaissent" les mises à jour dans les dépendances (généralement en raison d'une bonne intégration avec votre référentiel de contrôle de source), recalculent les dépendances transitives et s'assurent que tout est toujours construit avec les dernières version.

  • Contrôle D'accès : Java, en dehors du contrôle d'accès au niveau de la classe, n'a pas d'abstraction plus élevée. Avec ces outils de génération, vous pouvez spécifier exactement quels projets vous voulez dépendre de vous et contrôler la visibilité et l'accès à un niveau de granularité plus élevé.

  • Contrôle personnalisé : la construction Eclipse / Netbeans construit toujours des fichiers JAR. Avec les mécanismes de construction personnalisés, vous pouvez créer votre propre archive personnalisée (interne à l'entreprise) avec des métadonnées supplémentaires l'information, si vous le souhaitez.

  • Plugins : Il existe une variété de plugins qui viennent avec des outils de construction qui peuvent faire diverses choses pendant la construction. De quelque chose de basique comme générer des Javadocs à quelque chose de plus non trivial comme exécuter des tests et obtenir une couverture de code, une analyse statique, la génération de rapports, etc.

  • Transport : certains systèmes de construction gèrent également le transport d'archives-d'un système de développement à un système de déploiement ou de production. Ainsi, vous pouvez configurer les itinéraires de transport, les horaires et autres.

Jeter un oeil à certains serveurs d'intégration continue comme CruiseControl ou Hudson. En outre, la page caractéristiques de Maven fournit un aperçu de ce que vous voulez savoir.

27
répondu Anirudh 2009-09-05 04:41:32

En plus de toutes les autres réponses. La principale raison pour laquelle je garde mes projets constructibles sans être obligé d'utiliser NetBeans ou Eclipse est qu'il est tellement plus facile de configurer des builds automatisés (et continus).

Il serait plutôt compliqué (en comparaison) de configurer un serveur qui démarre eclipse, met à jour la source du référentiel, tout construit, envoie un mail avec le résultat et copie la sortie quelque part sur un disque où les 50 dernières builds sont stockées.

12
répondu Fredrik 2009-09-05 05:25:56

Si vous travaillez seul ou en très petit groupe, il peut sembler qu'un système de construction est juste un rétroprojecteur. À mesure que le nombre de développeurs augmente, il devient rapidement difficile de suivre tous les changements et de s'assurer que les développeurs restent synchronisés. Un système de construction réduit le taux d'augmentation de ces frais généraux de votre équipe grandit. Considérez les problèmes de construction de tout le code dans Eclipse une fois que vous avez plus de 100 développeurs travaillant sur le projet.

Une raison impérieuse d'avoir une build system est de s'assurer que ce qui a été livré à vos clients est compilé à partir d'une version spécifique du code vérifié dans votre SCM . Cela élimine toute une classe de problèmes "fonctionne sur ma boîte"et, à mon avis, cet avantage en vaut la peine en réduisant le temps de support. Les builds isolés (par exemple sur un serveur CI ) mettent également en évidence les problèmes de développement, par exemple lorsque des changements partiels ou cassants ont été commis, vous avez donc une chance d'attraper des problèmes début.

Une construction dans un IDE construit tout ce qui se trouve sur la boîte, alors qu'un système de construction autonome produira une construction reproductible directement à partir du SCM. Bien sûr, cela pourrait être fait dans un IDE, mais AFAIK seulement en invoquant quelque chose comme Ant ou Maven pour gérer toutes les étapes de construction.

Puis bien sûr il y a aussi les avantages directs de construire des systèmes. Un système de construction modulaire réduit les problèmes de copier-coller et gère la résolution des dépendances et d'autres problèmes liés à la construction question. Celadevrait permettre aux développeurs de se concentrer sur la fourniture de code. Bien sûr, chaque nouvel outil introduit ses propres problèmes et la courbe d'apprentissage impliquée peut donner l'impression qu'un système de construction est une surcharge inutile (juste Google je déteste Maven pour avoir une idée).

3
répondu Rich Seller 2009-09-07 15:45:58

Le problème avec la construction à partir de L'IDE, est qu'il y a des tonnes de paramètres affectant la construction. Lorsque vous utilisez un outil de construction tous les paramètres résumés dans une plus ou moins lisible dans un petit ensemble de scripts ou de fichiers de configuration. Cela permet dans le cas idéal à n'importe qui d'exécuter une construction avec pratiquement aucune configuration manuelle.

Sans l'outil de construction, il pourrait devenir presque impossible de compiler votre code EN UN AN, car vous devrez désosser tous les paramètres

2
répondu Jens Schauder 2009-09-05 05:11:27

Caractéristiques différentes. Par exemple, Maven peut analyser vos dépendances et aller les télécharger, et leurs dépendances afin que vous n'ayez pas à le faire. Même pour un projet de taille moyenne, il peut y avoir un très grand nombre de dépendances. Je ne pense pas Qu'Eclipse puisse faire ça.

1
répondu Shizzmo 2009-09-05 04:16:44

@anonyme,

  • Pourquoi est-ce que je suppose que moi, un membre de votre équipe, utilise un IDE tous les de temps? Je pourrais vouloir construire le code sur un serveur de construction sans tête, est-ce ok?
  • me refuseriez-vous aussi le droit de utilisation d'une intégration continue moteur?
  • Puis-je récupérer les dépendances d'un référentiel central? Comment puis-je le faire?
  • Voulez-vous me lier à un IDE spécifique? Je ne peux pas exécuter Eclipse facilement sur mon très vieux ordinateur portable, mais je vais acheter un nouveau un.

Peut-être que je devrais aussi désinstaller subversion et utiliser des correctifs ou simplement des dossiers zip sur un partage sftp / ftp / Samba.

1
répondu 2009-09-05 04:38:20

Les outils de construction vous permettent de faire une construction automatiquement, sans invention humaine, ce qui est essentiel si vous avez une base de code capable de construire de nombreuses applications (comme nous le faisons).

Nous voulons être certains que chacune de nos applications peut construire correctement après tout changement de base de code. La meilleure façon de vérifier cela est de laisser un ordinateur le faire automatiquement à l'aide d'un outil D'intégration Continouos. Nous vérifions simplement le code, et le serveur CI ramasse il y a un changement et reconstruit tous les modules influencés par ce changement. Si quelque chose se casse, la personne responsable est envoyée directement par la poste.

Il est extrêmement pratique de pouvoir automatiser les choses.

1
répondu Thorbjørn Ravn Andersen 2009-09-05 09:30:04

Pour développer la réponse de Jens Schauder, beaucoup de ces options de construction finissent dans une sorte de .fichier de projet. L'un des maux D'Eclipse est qu'ils stockent des noms de chemin absolus dans tous ses fichiers de projet, de sorte que vous ne pouvez pas copier un fichier de projet d'une machine à une autre, qui pourrait avoir son espace de travail dans un répertoire différent.

La raison la plus forte pour moi, ce sont les constructions automatisées.

0
répondu dj_segfault 2009-09-05 06:05:39

Les IDE fonctionnent simplement sur une couche d'abstraction supérieure.

NetBeans utilise nativly Ant comme outil de construction sous-jacent et peut récemment ouvrir directement des projets maven dans NetBeans. Par conséquent, votre projet NetBeans typique peut être compilé avec ant et votre projet maven est déjà un projet NetBeans.

Comme pour chaque discussion GUI vs CLI, les IDE semblent plus faciles pour les débutants, mais une fois que vous avez l'idée, il devient difficile de faire des choses complexes.

Changer la configuration avec un IDE signifie en cliquant quelque part qui est facile pour les choses de base, mais pour les trucs compliqués, vous devez trouver le bon endroit pour cliquer. De plus, les IDE semblent cacher les informations importantes. Cliquer sur un bouton pour ajouter une bibliothèque est facile, mais vous ne savez toujours pas où se trouve la bibliothèque, etc.

En revanche, l'utilisation D'une CLI n'est pas facile à démarrer mais devient rapidement facile. Il permet de faire des choses complexes plus facilement.

En utilisant Ant ou Maven signifie que chacun peut choisir son propre IDE pour travailler l'un des code. Dire à quelqu'un d'installer IDE X pour le Compiler est beaucoup plus lourd que de dire "exécuter dans votre shell". Et bien sûr, vous ne pouvez pas expliquer le premier à un outil externe.

Pour résumer, L'IDE utilise un outil de construction lui-même. Dans le cas de Netbeans Ant (ou Maven) est utilisé afin que vous puissiez obtenir tous les avantages et les inconvénients de ceux-ci. Eclipse utilise sa propre chose (pour autant que je sache) mais peut également intégrer des scripts ant.

Quant aux outils de construction eux-mêmes, Maven est significativement différent de La Fourmi. Il peut télécharger des dépendances spécifiées jusqu'au téléchargement d'un serveur web pour exécuter votre projet.

0
répondu wierob 2009-09-05 09:48:16

Dans tous les projets, les développeurs invoquent souvent manuellement le processus de génération.mais il ne convient pas aux grands projets, où il est très difficile de garder une trace de ce qui doit être construit, dans quelle séquence et quelles dépendances il y a dans le processus de construction.Par conséquent, nous utilisons des outils de construction pour nos projets.
Construire des outils fait variétés de la tâche dans l'Application qui fera par le développeur dans leur vie quotidienne.
Ils sont
1.Téléchargement de dépendances.
2.Compilation du code source dans le code binaire.
3.Empaquetant ce code binaire.
4.L'exécution des tests.
5.Déploiement sur les systèmes de production.

0
répondu Selvan 2017-04-12 12:39:43