Qu'est-ce qu'un outil de création?

130

Depuis 4 ans, je programme avec Eclipse (pour Java) et Visual Studio Express (pour C #). Les IDE mentionnés semblaient toujours fournir toutes les fonctionnalités qu'un programmeur pourrait demander (liées à la programmation, bien sûr).

Dernièrement, j'ai entendu parler de quelque chose appelé «outils de construction». J'ai entendu dire qu'ils sont utilisés presque dans tous les types de développement dans le monde réel. Que sont-ils exactement? Quels problèmes sont-ils censés résoudre? Comment se fait-il que je n'en ai jamais eu besoin ces quatre dernières années? Sont-ils en quelque sorte des IDE dépouillés de la ligne de commande?

Gaurang Agrawal
la source

Réponses:

117

Que sont les outils de construction?

Les outils de construction sont des programmes qui automatisent la création d'applications exécutables à partir du code source (par exemple .apk pour l'application Android). La construction incorpore la compilation, la liaison et l'empaquetage du code dans une forme utilisable ou exécutable.

Fondamentalement, l'automatisation de la construction est l'acte de script ou d'automatisation d'une grande variété de tâches que les développeurs de logiciels effectuent dans leurs activités quotidiennes telles que:

  1. Téléchargement des dépendances.
  2. Compilation du code source en code binaire.
  3. Emballage de ce code binaire.
  4. Exécution de tests.
  5. Déploiement sur les systèmes de production.

Pourquoi utilisons-nous des outils de construction ou l'automatisation de la construction?

Dans les petits projets, les développeurs invoqueront souvent manuellement le processus de construction. Ce n'est pas pratique pour les grands projets, où il est très difficile de suivre ce qui doit être construit, dans quel ordre et quelles dépendances il y a dans le processus de construction. L'utilisation d'un outil d'automatisation permet au processus de construction d'être plus cohérent.

Divers outils de construction disponibles (nommer seulement quelques-uns):

  1. Pour java - Ant, Maven, Gradle.
  2. Pour .NET Framework - NAnt
  3. c # - MsBuild.

Pour plus d'informations, vous pouvez consulter les liens suivants:

1. Construisez l'automatisation

2. Liste des logiciels d'automatisation de construction

Merci.

Ritesh Gune
la source
17

Les outils de build sont des outils pour gérer et organiser vos builds, et sont très importants dans les environnements où il existe de nombreux projets, en particulier s'ils sont interconnectés. Ils servent à s'assurer que là où différentes personnes travaillent sur divers projets, ils ne cassent rien. Et pour vous assurer que lorsque vous apportez vos modifications, elles ne cassent rien non plus.

La raison pour laquelle vous n'en avez pas entendu parler auparavant est que vous n'avez jamais travaillé dans un environnement commercial auparavant. Il y a beaucoup de choses que vous n'avez probablement pas rencontrées dans un environnement commercial, surtout si vous travaillez dans des éditeurs de logiciels.

Comme d'autres l'ont dit, vous les avez utilisés, mais vous n'avez pas eu à les considérer, car vous avez probablement travaillé d'une manière différente de la manière commerciale habituelle de travailler.

Chat Schroedingers
la source
10

Les outils de construction sont généralement exécutés sur la ligne de commande, soit dans un IDE, soit complètement séparé de celui-ci.

L'idée est de séparer le travail de compilation et d'empaquetage de votre code de la création, du débogage, etc.

Un outil de construction peut être exécuté sur la commande ou dans un IDE, tous deux déclenchés par vous. Ils peuvent également être utilisés par des outils d'intégration continue après avoir extrait votre code d'un référentiel et sur une machine de construction propre.

make était un des premiers outils de commande utilisés dans les environnements * nix pour la construction de C / C ++.

En tant que développeur Java, les outils de construction les plus populaires sont Ant et Maven. Les deux peuvent être exécutés dans des IDE comme IntelliJ ou Eclipse ou NetBeans. Ils peuvent également être utilisés par des outils d'intégration continue comme Cruise Control ou Hudson.

duffymo
la source
6
Maintenant, Gradle est également largement utilisé
asura
Pas d'où je suis assis. Je n'étais pas au courant de Gradle, alors merci pour la référence.
duffymo
@duffymo Pourriez-vous s'il vous plaît élaborer sur la dernière ligne. Qu'est-ce que l'intégration continue? Comment sont-ils liés à la création d'outils?
Quazi Irfan
4

Les outils de construction servent généralement à transformer le code source en binaires - ils organisent le code source, définissent des indicateurs de compilation, gèrent les dépendances ... certains d'entre eux s'intègrent également à l'exécution de tests unitaires, à l'analyse statique, à la génération de documentation.

Eclipse ou Visual Studio sont également des systèmes de construction (mais plus un IDE), et pour Visual Studio, c'est le msbuild sous-jacent pour analyser les fichiers de projet Visual Studio sous le capot.

L'origine de tous les systèmes de construction semble être le fameux «make».

Il existe des systèmes de construction pour différentes langues:

  1. C ++: make, cmake, premake
  2. Java: fourmi + lierre, maven, gradle
  3. C #: msbuild

Habituellement, construisez des systèmes en utilisant un langage spécifique au domaine propriétaire (make, cmake) ou xml (ant, maven, msbuild) pour spécifier une construction. La tendance actuelle est d'utiliser un vrai langage de script pour écrire le script de construction, comme lua pour premake et groovy pour gradle, l'avantage d'utiliser un script est qu'il est beaucoup plus flexible, et vous permet également de créer un ensemble de normes. API (comme version DSL).

Baiyan Huang
la source
1

Le processus de construction est un processus de compilation de votre code source pour toute erreur à l'aide de certains outils de construction et de création de versions (qui sont des versions exécutables du projet). Nous (principalement les développeurs) apportons quelques modifications au code source et enregistrons ce code pour que le processus de construction se produise. Après le processus de construction, il donne deux résultats: 1. Soit vous construisez des PASSES et vous obtenez une version exécutable de votre projet (la construction est prête). 2. Il échoue et vous obtenez certaines erreurs et la construction n'est pas créée.

Il existe différents types de processus de construction comme: 1. Construction nocturne 2. Construction fermée 3. Construction d'intégration continue, etc.

Les outils de build aident et automatisent le processus de création de builds.

* So in Short Build est une version du logiciel au format pré-version utilisée par le développeur ou l'équipe de développement pour gagner en confiance pour le résultat final de son produit en surveillant en permanence son produit et en résolvant tout problème au début du processus de développement. *

Prakash
la source
Pourriez-vous s'il vous plaît en dire un peu plus sur les builds Nightly, Gated et Continuous Integration?
Quazi Irfan
@iamcreasy J'ai ajouté une autre réponse en ce qui concerne votre question d'explication sur les différentes versions. Vous pouvez trouver cette explication ci-dessous. J'ai également ajouté des liens pour vous aider à mieux comprendre le processus de construction.
Prakash
1

Ce sont différents types de processus par lesquels vous pouvez faire vos builds.

1. Construction d'intégration continue:Dans ce cas, les développeurs enregistrent principalement leur code et juste après leur enregistrement, une version est lancée pour la construction des modifications récentes afin que nous sachions si les modifications effectuées par le développeur ont fonctionné ou non juste après l'enregistrement. Ceci est préférable pour les petits projets ou les composants des projets. Dans le cas où plusieurs équipes sont associées au projet ou s'il y a un grand non. des développeurs travaillant sur le même projet ce scénario devient difficile à gérer comme s'il y avait des «n». des enregistrements et la construction échoue à certains moments, il devient très difficile de déterminer si toute la casse s'est produite à cause d'un problème ou de plusieurs problèmes, donc si les problèmes plus anciens ne sont pas résolus correctement, il devient très difficile de retracer le plus tard défauts survenus après ce changement.

2. Builds de check-in fermés: Dans ce type de check-in, une build est lancée juste après que le check-in soit fait en gardant les changements dans un ensemble de tablettes. Dans ce cas, si la génération réussit, l'archivage du jeu d'étagères est validé, sinon il ne sera pas validé dans Team Foundation Server. Cela donne une image légèrement meilleure de la construction de l'intégration continue, car seuls les enregistrements réussis sont autorisés à s'engager.

3. Builds nocturnes: Ceci est également appelé builds programmés. Dans ce cas, nous planifions l'exécution des builds pendant une durée spécifique afin de générer les modifications. Toutes les modifications précédentes non validées de la dernière génération sont générées au cours de ce processus de génération. Ceci est pratiqué lorsque nous voulons nous enregistrer plusieurs fois mais que nous ne voulons pas de compilation à chaque fois que nous enregistrons notre code afin que nous puissions avoir une heure ou une période fixe pendant laquelle nous pouvons lancer la construction pour la construction du code enregistré.

Vous trouverez plus de détails sur ces versions à l'emplacement ci-dessous.

Enregistrement fermé dans les builds

Constructions d'intégration continue

Constructions nocturnes

Prakash
la source
0

Vous les avez utilisés - IDE est un outil de construction. Pour la ligne de commande, vous pouvez utiliser des choses comme make.

Les gens utilisent des outils de ligne de commande pour des choses comme une construction de nuit - donc le matin avec une gueule de bois, le programmeur a réalisé que le code avec lequel il a joué avec les dernières versions des bibliothèques ne fonctionne pas!

Ed Heal
la source
11
Habituellement, l'EDI n'est pas un outil de construction, il s'intègre à / appelle un outil de construction. Par exemple, Visual Studio appelle normalement MSBuild.
Justin
-1

"... il est très difficile de garder une trace de ce qui doit être construit" - Les outils de construction n'aident pas avec tout cela. Vous devez savoir ce que vous voulez construire. (Cité de la réponse de Ritesh Gun)

"J'ai entendu dire qu'ils étaient utilisés presque dans tous les types de développement dans le monde réel" - Pour une raison quelconque, les développeurs de logiciels aiment travailler dans de grandes entreprises. Ils semblent avoir des directives de travail plus floues pour chaque personne qui y travaille.

"Comment se fait-il que je n'en ai jamais eu besoin ces quatre dernières années". Probablement parce que vous êtes un programmeur expérimenté.

Pseudo, méta. Je pense que les outils de construction ne fournissent aucun avantage réel. Il est juste là pour ajouter un sentiment de sécurité résultant de mauvaises pratiques de l'entreprise, d'un manque de direction - un mauvais leadership architectural logiciel menant à une mauvaise connaissance réelle du projet. Vous ne devriez jamais avoir à utiliser des outils de génération (pour les tests) dans votre projet. Faire des tests aléatoires avec un manque de connaissance du projet logiciel ne donne aucune aide du tout.

Vous ne devriez jamais ajouter quelque chose à un projet sans connaître son objectif et comment il fonctionnera avec les autres composants. Les composants peuvent être fonctionnels séparés, mais ne peuvent pas fonctionner ensemble. (C'est la responsabilité de l'architecte logiciel que j'assume).

Et si 4 à 5 composants sont ajoutés au projet. Vous ajoutez un 6e composant. Avec le premier composant ajouté, cela pourrait tout gâcher. Aucun automatique n'aiderait à détecter cela.

Il n'y a pas d'autre raccourci que de penser penser penser.

Ensuite, il y a le téléchargement automatique à partir des référentiels. Pourquoi voudriez-vous faire ça? Vous devez savoir ce que vous téléchargez, ce que vous ajoutez au projet. Comment détectez-vous les changements dans les versions des référentiels? Tu dois savoir. Vous ne pouvez rien «auto».

Et si nous testions des vélos et des transports pour bébé avec les yeux bandés avec un bâton et frappions au hasard avec. Cela semble être l'idée de tester les outils de construction.

Je suis désolé qu'il n'y ait pas de raccourci https://en.wikipedia.org/wiki/Scientific_method et https://en.wikipedia.org/wiki/Analysis

Lealo
la source
Votre réponse est incroyablement biaisée d'un point de vue C où il s'agit d'un problème majeur. Les outils de construction sont essentiels pour tout ce qui est plus complexe que l'exécution d'un compilateur (même dans ce cas, gcc est un énorme mot b) et la gestion des dépendances avec des déclarations de dépendance strictes est une aubaine. Ce n'est pas parce que vous ne l'utilisez pas que ce sont de mauvais concepts. Si vous utilisez simplement des scripts bash pour créer des éléments, c'est aussi un outil de construction - mais pas très bon. Si vous compilez à la main ou via ide exclusivement, Dieu peut être avec vous pour des builds complexes et répétables sur différents systèmes.
RecursiveExceptionException