2010-06-18 5 views
19

J'essaie de comprendre l'utilisation de Maven et j'ai eu de nombreux articles décrivant ses caractéristiques et utilisations. Mais je ne suis tout simplement pas capable de comprendre l'utilisation réelle de Maven du point de vue de la productivité. De ce à quoi je suis habitué dans nos projets d'école était juste de créer un nouveau projet Java dans Eclipse, écrire votre code, créer un .war (si basé sur le Web) et coller le code dans le dossier webapps de Tomcat et commencer le serveur!Comment utiliser Maven dans mon projet Java et pourquoi?

Ainsi,

  1. Où Maven venir en image? J'ai utilisé Ant et je comprends que les fourmis bénéficient d'un processus de construction standardisé. Mais pourquoi avons-nous besoin d'une fourmi avancée sous la forme de Maven?

  2. Dans tous les cas, j'ai besoin de l'utiliser, alors où puis-je commencer - flux de base, de bons tutoriels?

Merci

+5

Ant n'est pas un processus de construction très standardisé. C'est plutôt un processus de construction «fais ce que tu veux avec la structure que tu veux». – ColinD

Répondre

14

Maven est utilisé pour gérer la construction, tests et processus de déploiement. Il peut séparer les tests unitaires et les tests d'intégration afin de les exécuter uniquement lorsque cela est nécessaire et de réduire le temps de construction.

Il est également un gestionnaire de dépendance , ce qui signifie que lorsque vous réalisez la pièce de serveur de votre projet a besoin apache commons-logging 1.0.4 mais les conflits clients avec quoi que ce soit passé 0.7.9, vous pouvez simplement ajouter quelques lignes aux pom.xml respectives fichiers et Maven gère tout cela (téléchargement, installation et suivi des différentes versions de ces dépendances). Je n'étais pas un croyant avant ma tâche actuelle, mais après 2 ans d'utilisation pour les grandes entreprises, je respecte absolument ce que Maven apporte à la table. Il ya beaucoup de ressources en ligne, mais si vous allez être le chef de file sur ce sujet et vraiment mal à l'aise, je vous recommande d'obtenir un livre - the O'Reilly one est utile.


oublié de mentionner qu'il ya un plugin Eclipse qui le rend presque indolore à utiliser avec Eclipse: m2Eclipse.


Deuxième mise à jour par exemple pom.xml segment répondre à la question OP:

Votre pom.xml contiendra le code XML tel que:

<dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.0.4</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

Ceux-ci sont téléchargés à partir du dépôt central de Maven (google « maven nexus ") ou vous pouvez configurer vos propres dépôts supplémentaires (comme pour vos propres projets, ou si vous n'êtes pas connecté à Internet).

+0

Ainsi, maven va télécharger et installer les fichiers jar requis nommés dans la dépendance? Comment? – zengr

+0

+1 pour m2eclipse – stacker

+0

@zengr, il les télécharge dans un "référentiel" local (think cache) et inclut les JAR du repo sur le classpath lors de l'exécution de tests, de la compilation, etc. Lors du conditionnement d'un .war par exemple, les JAR sont ensuite emballés dans le .war. –

3

Free books about Maven peut être téléchargé depuis Sonatype (d'où viennent les développeurs originaux de Maven).

Voir également la documentation sur le site Web Apache Maven.

+0

Le lien semble être cassé. Le nouveau lien ressemble probablement à [ceci] (http://www.sonatype.com/resources/books). – Pshemo

1

D'où vient Maven en image?I ont utilisé Ant et je comprends Ants bénéficier d'un processus de construction normalisé . Mais pourquoi avons-nous besoin d'un Ant avancé sous forme de Maven?

  • Maven introduit "convention sur la configuration" cela aide si certains collègues écrivent scipts plus gros que le code de fourmis. En plus de la gestion des dépendances, le seul problème est de convertir des projets monolithiques avec de nombreux artefacts.

Dans tous les cas, je dois l'utiliser, donc où dois-je commencer - flux de base, quelques bons tutoriels?

utile.

5

J'ai eu exactement la même perception que vous et pendant des années j'ai évité Maven.

La chose est, il vous permet d'obtenir facilement les pots nécessaires votre application peut avoir besoin (appelées dépendances - pots et d'autres choses -). Donc, la prochaine fois que quelqu'un d'autre dirigera votre projet, il aura automatiquement les pots.

Je sais que c'est un peu difficile à comprendre, jusqu'à ce que vous travaillez avec un projet existant qui l'utilise.

Par exemple, je téléchargé un projet open source récemment, qui dépendait de 10 ou 12 différents sur les différentes versions de pot. Après avoir téléchargé le code source et exécuté Maven, tous ces pots (et beaucoup d'autres) ont été téléchargés pour moi.

Le problème avec Maven (comme un de mes amis m'a dit) est que pour effectuer un programme « Bonjour tout le monde », il télécharge d'abord le monde pour le saluer. : P

+0

merci pour le partage d'exp :) – zengr

+0

:) De rien. BTW, j'ai essayé d'entrer dans toute cette documentation, tutoriel et tout, mais rien n'a plus de sens que de l'exécuter, après que tout commence à avoir un sens. – OscarRyz

0

Le dernier netbeans a également une très bonne intégration de maven.

0

Si vous travaillez dans une organisation, essayez de créer un proxy de référentiel maven. Artifactory est une bonne option.

4

pour tous ceux qui se demandent où le Maven télécharge les pots de dépendance, consultez un dossier nommé .m2 dans le répertoire racine de l'utilisateur. par exemple. pour moi c'est le c: \ documentsand settings \ myUserName.m2 \

aussi j'ai fait des recherches sur maven et j'ai fait quelques petits gribouillages comme des rappels. Si cela vaut la peine de lire alors voici ::

/* mvn générer mvn install téléchargements tous les pots nécessaires Tests test mvn l'application faite ... mvn site construit le site de téléchargement dépendances

Pour déployer le site, nous devons déclarer un emplacement à distribuer dans votre pom.xml, similaire au référentiel pour le déploiement. ... site scp: //www.mycompany.com/www/docs/project/ ...

mvn site deploy déploie le site

comment construire la structure du site: le fichier site.xml est utilisé pour décrire la mise en page du site, et remplace le fichier navigation.xml utilisé dans Maven

Un échantillon est donné ci-dessous:

Maven http://maven.apache.org/images/apache-maven-project.png http://maven.apache.org/ http://maven.apache.org/ images/maven-small.gif

<menu name="Maven 2.0"> 
    <item name="Introduction" href="index.html"/> 
    <item name="Download" href="download.html"/> 
    <item name="Release Notes" href="release-notes.html" /> 
    <item name="General Information" href="about.html"/> 
    <item name="For Maven 1.x Users" href="maven1.html"/> 
    <item name="Road Map" href="roadmap.html" /> 
</menu> 

<menu ref="reports"/> 

... 

donc en effet, nous devons lier notre html à ce format de structure pour faire la mise en page du site également afin que nous puissions ajouter de nouveaux css ou de tels trucs, tout ce que nous devons faire est de les mettre dans la partie ressources du dossier src

nous pouvons alors créer un fichier de guerre de notre projet et déposez-le dans le dossier httpd de apache ou tel dossier similaire deNotre serveur web

dans le cas où nous avons besoin de générer des projets, nous devons ajouter quelques lignes de code dans notre fichier pom.xml et c'est: ... org.apache .maven.plugins maven-projet-info-rapports-plugin 2.0.1 ...

aussi, les descripteurs de site doivent être définis dans site.xml

les détails peuvent être vu dans la documentation de Maven

structure maven avec leur importance:

projet/ pom.xml - Définit le projet/ principal/ java/- Contient tout le code Java qui ira dans votre artefact final.
Voir maven-compiler-plugin pour plus de détails scala/- Contient tout le code scala qui ira dans votre artefact final. //// pas encore nécessaire pour notre projet en cours Voir maven-scala-plugin pour plus de détails resources/- Contient tous les fichiers statiques qui devraient être disponibles sur le chemin de classe dans l'artefact final. Voir maven-resources-plugin pour les détails webapp/- Contient tout le contenu d'une application web (jsps, css, images, etc.
Voir maven-war-plugin pour les détails site/- Contient tous les fichiers apt ou xdoc utilisés pour créer un site Web de projet.
Voir maven-site-plugin pour plus de détails
test/ java/- Contient tout le code Java utilisé pour les tests. Pour plus de détails, voir maven-compiler-plugin.
Voir maven-scala-plugin pour plus de détails resources/- Contient tout le contenu statique qui devrait être disponible sur le chemin de classe pendant les tests. Voir maven-ressources-plugin pour plus de détails

mvn valider cette validera que toutes les dépendances sont satisfaites et rien ne manque mvn compile ce compilera le projet mvn vérifier vérifie si le paquet est valide ou non aussi dans le projet, les dépendances sont à insérer dans le fichier xml

l'exemple de l'injection de dépendances est donnée ci-dessous :: org.scala-lang scala-bibliothèque 2.7.2-RC2 JUnit JUnit 3.8.1 Test

Chaque dépendance se compose de plusieurs éléments:

* groupId - The group of the dependency to rely on 
* artifactId - The artifact in the group to rely on 
* version - The version of the dependency to rely on 
* scope - The "scope" of the dependency. Defaults to compile (more details later) 
* packaging - The packaging for the dependency. Defaults to jar (e.g. jar, war, ear) 

Vous pouvez intégrer vos pages statiques en procédant comme suit:

* Put your static pages in the resources directory, ${basedir}/src/site/resources 
* Create your site.xml and put it in ${basedir}/src/site 
* Link to the static pages by modifying the menu section, create items and map them to the filenames of the static pages 

mvn tomcat: depl oy à déployer sur tomcat ou apache, vous pouvez utiliser cette commande

Questions connexes