Question

J'ai un projet parallèle, je fais = en Java. C'est une webapp assez simple. Il s'exécute dans Tomcat sur un serveur Linux et utilise une base de données MySQL. La majorité du code a été écrit avec le cadre de printemps. Il a beaucoup de tests unitaires en place. Quand je code, c'est dans Eclipse. Lorsque je déploie l'application, j'exécute quelques scripts shell pour déplacer un fichier WAR sur le serveur Web, effectuer des mises à jour de la base de données et modifier les configurations apache. Je suis le seul développeur à travailler sur ce projet et, à l'heure actuelle, il n'est déployé que dans un environnement (production), bien qu'un jour, je veuille peut-être également disposer d'un environnement de test ou de transfert. J'utilise le contrôle de version SVN, via le plug-in Eclipse.

Je suis toujours au courant que des personnes utilisent Maven pour leurs projets. Comme beaucoup de gens l'utilisent, je me dis que ça doit être bon. J'aimerais l'apprendre pendant mon temps libre. La seule chose est que je ne suis pas tout à fait convaincu sur pourquoi je voudrais utiliser Maven? Mon premier paragraphe me semble-t-il être un projet approprié pour Maven? At-il des avantages spécifiques pour un projet qui interagit avec une base de données?

Était-ce utile?

La solution

Votre projet ne ressemble pas à un projet approprié pour Maven. Vous semblez avoir un environnement de développement opérationnel. Pourquoi en créer un autre? Cela vous donnera juste un fichier de projet supplémentaire à maintenir qui rompt le bon vieux DRY principe.

Autres conseils

Maven conviendrait bien à votre projet IMO. Maven est un outil complet de gestion de la construction et du déploiement. Sa plus grande force est de rendre les scripts de construction nettement plus faciles à gérer que des fichiers Ant ou des scripts shell comparables sur le plan fonctionnel.

Il existe de nombreux avantages à utiliser maven, le plus important étant sa préférence pour la convention par rapport à la configuration. Cela signifie que si votre projet est structuré à l'aide de la structure de répertoires Maven, il ne nécessite pratiquement aucune configuration pour le construire et l'exécuter vos tests JUnit.

L'autre grande victoire que Maven vous donne est la gestion de la dépendance. Vous pouvez définir de manière déclarative les dépendances de votre projet dans le fichier POM (Project Object Model) de Maven. Maven se charge de stocker tous les fichiers JAR dans une structure de répertoires locale conservée. Dans le cas d'artefacts accessibles au public, les fichiers JAR sont automatiquement téléchargés à partir du référentiel central Maven et, dans le cas de fichiers JAR internes ou propriétaires, vous pouvez les installer dans votre référentiel à l'aide d'une seule commande.

En plus d’organiser ces artefacts et de configurer automatiquement votre chemin de classe de construction de manière à inclure tous les fichiers JAR nécessaires, maven gérera également les hiérarchies de dépendances. Cela signifie que si votre projet dépend des jarres A et A dépend du jar B, le jar B sera automatiquement associé à votre fichier WAR, même si vous ne l’indiquez pas explicitement comme dépendance dans votre configuration.

En outre, du point de vue du développement professionnel, il est logique d’apprendre Maven car, selon mon expérience, Maven a dépassé Ant en tant qu’outil de construction de jure de choix pour les projets Java open source et propriétaires.

Tout ceci étant dit, si vous avez un système de compilation rapide et fiable, vos efforts de conversion à Maven ne mériteront peut-être pas la peine d'être tentés, simplement pour utiliser le même outil que tout le monde.

Maven serait très bien pour ce que vous voulez faire. Contrairement à la plupart des outils de compilation, maven utilise les conventions à bon escient (du moins, mieux que beaucoup d’autres), et il dispose de "plugins". pour chaque domaine que vous avez mentionné:

Tests unitaires: plug-in maven surefire

Intégration Eclipse: m2eclipse

Déploiement du fichier WAR: plug-in WAR et Plugin de déploiement

Maven peut également vous aider lors des tests d'intégration sur Tomcat (si vous en avez), car vous pouvez démarrer, arrêter ou déployer une guerre à l'aide de plug-in cargo .

Quoi qu'il en soit, si vous envisagez de lire pendant votre temps libre, voici un livre gratuit (format PDF): Maven le guide définitif

J'espère que ça aide!

J'utilise Maven dans la colère au travail. C'est une maîtresse dure. Cela facilite les choses tant que vous faites les choses que beaucoup de gens ont et cela est important, aussi longtemps que vous les faites comme le pense Maven, vous devriez les faire. Sortez de ce sentier étroit et il vous combattra à chaque étape.

J'ai été impressionné par BuildR de l'utiliser de côté. Il est flexible comme ANT tout en exploitant le système de dépendance de Maven. En outre, il est en incubation, donc il est un peu rugueux sur les bords.

J'ai déjà lancé un nouveau travail temporaire utilisant Maven. Brûlée pendant 2 jours en essayant de comprendre comment leur build Maven fonctionnait En fait, ils utilisaient tous le maven 1.01 sur Windows, et j'avais essayé par mégarde de développer le 1.02, donc cela ne fonctionnait pas. Personne à la place ne savait comment cela fonctionnait, et ils l'utilisaient depuis des mois et ils en étaient satisfaits. Quelques mois plus tard, sur le même projet, j'ai dû approfondir les scripts de jelly pour modifier une seule variable de construction. Ce n’était pas amusant.

Lorsque j'ai commencé à l'utiliser, j'ai lu "convention sur configuration" et "utilise un ensemble standard de répertoires". Celles-ci ne se trouvaient nulle part dans la documentation. Je suppose que vous étiez supposé deviner.

Mes opinions:

  • tout outil que vous utilisez et que vous ne comprenez pas complètement est une erreur et un ancrage potentiel pour votre processus de développement. Si l'outil est vraiment, vraiment compliqué, vous pouvez utiliser les parties les plus simples de celui-ci plutôt que de le maîtriser profondément. Si vous n'utilisez pas ou ne craignez pas les parties les plus puissantes de l'outil, vous compromettez probablement son objectif.
  • Maven est un exemple classique de quelque chose de tellement débordant de bonté automagique que vous n’avez aucune idée de ce que cela fait si vous ne consacrez pas plus de votre temps qu’un outil de construction mérite de devenir un maven maven. Une solution sur-conçue à la recherche d'un problème.
  • Je n'ai trouvé aucun exemple de choses que je devais faire et que je ne pouvais pas faire avec ant et que j'avais besoin de maven. Je sais qu'il y en a, je n'en ai jamais eu besoin. Si je le faisais, je serais probablement plus charitable en ce qui concerne les efforts nécessaires pour traiter avec Maven.
  • Votre construction dépend d'Internet. Il n’est pas rare maintenant de télécharger un petit projet, d’exécuter mvn et d’avoir maven téléchargé 10 plugins avant même de commencer à construire ce que vous essayez de construire en premier lieu. Que fait-il? Pas moyen de savoir vraiment, mais vous feriez mieux d'espérer que ça ne casse pas. En cas d'échec, la complexité de l'échec et les couches de dépendance superposées rendent le débogage impossible. Je ne vois pas en quoi il s’agissait là d’une amélioration par rapport à des outils de construction plus simples ou même souhaitable pour une raison quelconque.

En résumé, c'est presque magique, sauf que lorsque cela ne fonctionne pas, vous ne savez probablement pas pourquoi. Cela semble être un mauvais compromis. C'était juste, il y a quelques années. Je sais que je suis méchant, et cela s’est amélioré dans les versions ultérieures (que j’ai également utilisées). Néanmoins, je le détestais (pouvez-vous dire?)

Nous faisons exactement ce que vous faites dans nos projets et nous utilisons Maven. Vous voudriez utiliser maven pour avoir une disposition normalisée et un moyen de construire votre projet. Vous ne devez jamais stocker toutes ces dépendances de jar dans SVN ou les conserver dans un endroit spécial, Maven le fait pour vous. Maven permet également aux autres développeurs de comprendre facilement votre projet. Une fois que vous aurez commencé à l’utiliser, vous ne voudrez plus regarder en arrière:)

Hormis le fait que de nombreux projets oss utilisent (ou convertissent en) maven et que certains projets de sources fermées se déplacent vers maven, votre projet ne bénéficie pas nécessairement beaucoup de l'utilisation de Maven.

Toutefois, si vous envisagez de faire appel à une source ouverte, les utilisateurs de votre projet pourraient tirer parti de l'utilisation de votre projet par maven.

ivy ( http: // ant peut vous procurer certains des avantages importants de maven (dépendances de jar). .apache.org / ivy / ).

Là encore, puisque vous semblez indiquer que vous êtes le seul développeur. si Maven ne fonctionne pas pour vous, vous pouvez rapidement revenir en arrière.

BR,
~ A

Ne pas. Découvrez ce que dites , et effectuez une recherche approfondie. Pensez également à consulter certains de mes autres commentaires sur Maven ici à SO.

J’ai utilisé maven pour la gestion de la dépendance il ya quelque temps, car j’en avais assez d’ajouter tous les bocaux, si je voulais le tester sur un autre boîtier ou à peu près. Vous n'avez pas vraiment à "apprendre" pour cela, cela ne prend pas beaucoup de temps avant de l'apprendre.

Cependant, le plus simple serait de demander à quelqu'un qui connaît déjà mvn, afin qu'il puisse vous montrer comment cela fonctionne et que vous l'apprendre rapidement.

L’un des grands atouts de Maven réside dans le fait qu’il effectue une bonne partie de la gestion de la construction / de la dépendance sans que vous écriviez de script de construction ou même que vous ne deviez décrire votre processus de construction. Vous avez déjà configuré votre projet, vous ne bénéficierez donc pas de la configuration Maven du shell de projet ou du téléchargement des dépendances que vous spécifiez sans que vous deviez les télécharger individuellement. Si votre objectif est d'apprendre à utiliser et à administrer Maven, le faire pour un projet comme celui-ci, où il n'y a pas d'autres développeurs et où le processus de construction est très simple (d'après ce que je peux dire) ne va pas aider beaucoup non plus. Je recommande donc de ne pas utiliser Maven pour le projet existant.

Toutefois, je souhaiterais configurer une application de test similaire à la vôtre en utilisant Maven et la comparer à la structure de votre projet pour voir si vous suivez les meilleures pratiques (du moins telles que les développeurs les observent) et si votre application respecte les conventions standard des applications Web.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top