web-dev-qa-db-fra.com

Que fait exactement Maven Update Project dans Eclipse?

Tout d'abord, je connais cette question , mais je suis intéressé par les détails qui n'y sont pas fournis.

J'ai jeté un œil à la documentation de m2Eclipse et je l'ai trouvée laconique de manière insatisfaisante. La seule partie pertinente que j'ai pu trouver est

Sinon, vous pouvez exécuter l'action "Maven/Mettre à jour la configuration du projet" à partir du menu contextuel du projet, qui est configuré pour exécuter "process-resources" par défaut et il peut également être modifié sur la même page de préférences.

mais je ne pouvais pas faire si Update project configuration est le même que Update project. Toutes les autres sources que j'ai trouvées en parcourant ne fournissent pas non plus de détails.

Pour récapituler, ce que j'aimerais savoir, c'est:

  1. Est-ce que Update project exécuter n'importe quel plugin Maven et, si oui, lesquels et avec quels paramètres par défaut?
  2. Y a-t-il des effets qui ne sont pas le résultat d'un plugin Maven, mais qui sont internes à Eclipse?
  3. Quelles sont les modifications sur la structure du projet? Par exemple, les dépendances Maven sont-elles copiées localement?
14
burubum

Le projet Update exécute-t-il un plug-in Maven et, le cas échéant, lesquels et avec quels paramètres par défaut?

Pendant le projet de mise à jour, m2Eclipse utilise le modèle d'objet de projet de construction maven-core. Plus précisément, maven model builder est utilisé pour construire le modèle de projet. En d'autres termes, cela conduit à la résolution des dépendances, aux notifications d'erreur et d'avertissement. Pour plus d'informations sur le résultat, vous pouvez vérifier org.Apache.maven.project.ProjectBuildingResult

Je ne pense pas que cela entraîne l'exécution de plugins. J'ai jeté un coup d'œil rapide et la phase 2 pendant la mise à jour n'est pas activée, ce qui fait le traitement des plugins.

Y a-t-il des effets qui ne sont pas le résultat d'un plugin Maven, mais qui sont internes à Eclipse?

Oui. Voir la dernière section de la réponse.

Quelles sont les modifications sur la structure du projet? Par exemple, les dépendances Maven sont-elles copiées localement?

Si vous voulez dire localement, dans l'espace de travail Eclipse, alors non. Les dépendances Maven indiquent une référence au référentiel local qui est généralement /.m2/repository. Le référentiel est également résolu en fonction du paramètre du menu Eclipse "Windows-> Préférence-> Paramètres utilisateur".

Pour plus d'informations, vous pouvez commencer à partir du code source suivant (l'une des méthodes invoquées lorsque vous mettez à jour le projet dans Eclipse),

public IStatus runInWorkspace(IProgressMonitor monitor) {
     ...... Unimportant stuff  

    MavenUpdateRequest request = new MavenUpdateRequest(projects, offline,forceUpdateDependencies);
    Map<String, IStatus> updateStatus = configurationManager.updateProjectConfiguration(request, updateConfiguration,
    cleanProjects, refreshFromLocal, monitor);


...... Unimportant stuff  

}

Résumé des différentes tâches effectuées (non exhaustif)

  1. Le projet est actualisé par rapport au système de fichiers. Cela revient à appeler un rafraîchissement sur le projet Java dans Eclipse.
  2. Vérifiez si l'une des dépendances a été ajoutée dans l'espace de travail. Vous devez avoir remarqué sous le dossier de projet local des dépendances maven. Junit et d'autres éléments sélectionneront les modifications à l'aide de cette fonctionnalité.
  3. Créez un modèle de projet maven à l'aide des bibliothèques maven-core.
  4. Actualisation du mappage du cycle de vie - M2Eclipse essaie de mapper certains des cycles de vie du plugin aux actions Eclipse. Pour plus d'informations, cochez
  5. Enfin, Builds Project utilisant le mécanisme de build Eclipse

De plus, il fait également des choses avec la présence de pom parent dans l'espace de travail, ce qui n'est pas très important dans ce contexte.

La configuration du projet de mise à jour est principalement liée à

  1. Ajout de la nature Maven (org.Eclipse.m2e.core.maven2Nature dans le fichier .project) - pas important dans votre contexte. Voir ceci .
  2. Définition du jeu de caractères par défaut pour votre projet basé sur project.build.sourceEncoding propriété maven.
  3. Eclipse - traitement du cycle de vie des plugins. Point 3 ci-dessus.
6
GauravJ