web-dev-qa-db-fra.com

Que fait Maven, en théorie et en pratique? Quand est-il utile de l'utiliser?

Je suis sur le point de démarrer un projet Java uniquement pour la pratique. J'ai lu sur Maven, mais je ne comprends pas vraiment quand il est censé être utilisé.

Pouvez-vous me donner des conseils pratiques? Est-ce que Maven aide beaucoup? Que fait Maven pour mon projet?

147
Piotr Krysiak

Ce que ça fait

Maven est un "outil de gestion de build", il sert à définir comment vos fichiers .Java sont compilés en .class, conditionnés dans .jar (ou .war ou .ear ) fichiers, (pré/post) traités avec des outils, gérant votre CLASSPATH , et tous les autres types de tâches nécessaires à la construction de votre projet. Il est similaire à Apache Ant ou Gradle ou Makefiles en C/C++, mais il tente d'être complètement autonome dans ce que vous ne devriez pas Vous n'avez besoin d'aucun outil ou script supplémentaire en intégrant d'autres tâches courantes telles que le téléchargement et l'installation des bibliothèques nécessaires, etc.

Il est également conçu autour du thème "build portability", de sorte que le même code ne fonctionne pas avec le même code de build fonctionnant sur un ordinateur mais pas sur un autre (ceci est un problème connu, nous avons des machines virtuelles de Windows 98 machines, car certaines de nos applications Delphi ne pouvaient pas être compilées ailleurs). De ce fait, il s'agit également du meilleur moyen de travailler sur un projet entre personnes qui utilisent des IDE différents, car les scripts Ant générés par l'IDE sont difficiles à importer dans d'autres IDE, mais tous les IDE comprennent et prennent en charge Maven ( IntelliJ , Eclipse , et NetBeans ). Même si vous ne finissez pas par aimer Maven, il devient le point de référence de tous les autres outils de construction modernes.

Pourquoi devriez-vous l'utiliser

Il y a trois choses à propos de Maven qui sont très Nice.

  1. Maven téléchargera (après avoir déclaré celles que vous utilisez) toutes les bibliothèques que vous utilisez et les bibliothèques pour lesquelles elles sont utilisées. vous automatiquement. C’est très agréable et rend ridiculement facile le traitement de nombreuses bibliothèques. Cela vous permet d'éviter "enfer de dépendance" . Il est similaire à celui d'Apache Ant Ivy .

  2. Il utilise " Convention over Configuration ". Ainsi, par défaut, vous n'avez pas besoin de définir les tâches que vous souhaitez effectuer. Vous n'avez pas besoin d'écrire une étape "compiler", "test", "package" ou "nettoyer" comme vous le feriez dans Ant ou un Makefile. Il suffit de mettre les fichiers aux endroits où Maven les attend et cela devrait fonctionner comme prévu.

  3. Maven possède également de nombreux plug-ins Nice, que vous pouvez installer, qui gèrent de nombreuses tâches de routine de générant des classes Java à partir d'un schéma XSD utilisant JAXB à mesure de la couverture de test avec Cobertura . Ajoutez-les simplement à votre pom.xml et ils s'intégreront à tout ce que vous voudrez faire.

La courbe d’apprentissage initiale est raide, mais (presque) tous les développeurs Java professionnels utilisent Maven ou leurs souhaits. Vous devez utiliser Maven pour chaque projet, mais ne soyez pas surpris s'il vous faut un certain temps pour vous y habituer et que vous souhaitiez parfois pouvoir simplement faire les choses à la main, car apprendre quelque chose de nouveau fait parfois mal. Cependant, une fois que vous serez vraiment habitué à Maven, vous constaterez que la gestion de la construction ne prend presque pas de temps.

Comment démarrer

Le meilleur endroit pour commencer est " Maven in 5 Minutes ". Cela vous permettra de commencer avec un projet prêt à coder avec tous les fichiers et dossiers nécessaires (oui, je vous recommande d’utiliser l’archétype quickstart, du moins au début).

Une fois que vous avez commencé, vous voudrez mieux comprendre comment l’outil doit être utilisé. Pour cela, " Better Builds with Maven " est le lieu le plus complet pour comprendre son fonctionnement, cependant, " Maven: la référence complète " est plus à la mode. -Date. Lisez le premier pour comprendre, puis utilisez le second pour référence.

179
Tobogganski

De la Sonatype doc :

La réponse à cette question dépend de votre propre perspective. La grande majorité des utilisateurs de Maven vont appeler Maven un "outil de construction": un outil utilisé pour créer des artefacts déployables à partir du code source. Les ingénieurs de construction et les chefs de projet peuvent se référer à Maven pour quelque chose de plus complet: un outil de gestion de projet. Quelle est la différence? Un outil de compilation tel que Ant est uniquement axé sur le prétraitement, la compilation, l’emballage, les tests et la distribution. Un outil de gestion de projet tel que Maven fournit un sur-ensemble de fonctionnalités trouvées dans un outil de génération. En plus de fournir des fonctionnalités de construction, Maven peut également générer des rapports, générer un site Web et faciliter la communication entre les membres d'une équipe de travail.

Je vous recommande fortement de consulter la documentation Sonatype et de regarder les plugins disponibles pour comprendre le pouvoir de Maven.

Très brièvement, il fonctionne à un niveau conceptuel supérieur à celui de Ant. Avec Ant, vous spécifiez l’ensemble de fichiers et de ressources que vous souhaitez créer, puis indiquez comment vous souhaitez les fusionner et spécifiez l’ordre dans lequel ils doivent être placés (nettoyer/compiler/jar). Avec Maven, tout cela est implicite. Maven s'attend à trouver vos fichiers à des endroits particuliers et travaillera automatiquement avec cela. Par conséquent, mettre en place un projet avec Maven peut être beaucoup plus simple, mais vous devez respecter les règles de Maven!

9
Brian Agnew

Maven est un outil de construction. Avec Ant sont Javas outils de construction.
Si vous êtes un débutant en Java bien que vous ne construisiez qu’en utilisant votre IDE puisque Maven a une courbe d’apprentissage très abrupte.

5
Cratylus