Je travaille sur un projet assez gros maven et je me développe en Java avec Eclipse.
Pour économiser du temps de compilation, je voudrais que Maven et Eclipse partagent la même cible que j'ai réussi à faire. Cependant, quand je compile avec Maven, Eclipse manque de choses qu'il met dans le bytecode, alors il recompille tout (de ce que je comprends). Je parle de la fonctionnalité "Construire automatiquement" ici, donc ce n'est pas Eclipse déléguant la construction à Maven. P>
Pour résoudre ceci, je pensais que je demanderais à Maven d'utiliser le même compilateur que Eclipse.
Après une recherche sur le Web, j'ai découvert que je pouvais ajouter ceci dans le haut Ceci semble fonctionner, mais la construction échoue assez rapidement avec beaucoup de
erreurs, alors qu'elle réussit avec Javac.
Je ne sais pas pourquoi, mais il semble qu'il y ait des conflits liés à
Le fait que les fichiers Java défaillant sont générés des fichiers. P> Donc, je pensais que je pouvais essayer d'utiliser le compilateur Eclipse uniquement pour le
composant que je travaille sur (qui n'a pas ce genre de généré
des dossiers). J'ai ajouté l'extrait ci-dessus dans le pas de ce compilateur 'Eclipse' Strong> P>
blockQquote> J'ai également essayé d'ajouter le Savez-vous si ce que j'essaie de faire est possible? Toute idée de la façon dont je peux le faire? P> p> pom code>: p>
pom code> de mon composant, mais quand
La construction atteint mon composant, l'erreur suivante est relevée: p>
plexus-compiler-eclipse code> Dépendance dans le
Dépendances énumérées dans le haut pom, mais même erreur. P>
4 Réponses :
Je devinerais que vos problèmes découlent du projet Eclipse et maven POM ne sont pas en train d'être synchronisé. Je vous suggère d'utiliser le Plugin M2eclipse pour garder Maven et Eclipse en synchronisation. Cela configurera votre projet Eclipse en utilisant le POM comme configuration «Master». P>
Je ne pense pas que vous devez configurer spécifiquement le compilateur à utiliser, mais vous devez configurer le plugin Maven-compiler comme vous le faites déjà. P>
J'utilise déjà m2eclipse déjà. Les projets Eclipse sont générés par Eclipse à partir de fichiers POM. Peut-être que je devrais mentionner: quand je dis "Eclise reconstruit tout", je parle de la fonctionnalité "Construire automatiquement" d'Eclipse. J'en ai besoin pour faire un swap chaud.
Je ne suis pas sûr à 100% de ce que vous essayez d'atteindre ici, mais cela ressemble à une mauvaise idée. Premièrement, vous devriez avoir Eclipse configuré pour être utiliser un SDK sur votre système et Maven devrait utiliser la même chose. Donc, je ne comprends pas pourquoi vous pensez que Eclipse ajoute quelque chose au code d'octet que Maven ne serait pas donné qu'ils utilisent tous les deux le même compilateur. p>
Deuxièmement, je n'essayerais pas d'utiliser des composants Eclipse dans une construction maven. Ils sont designs pour travailler dans l'IDE Eclipse afin de les amener à travailler en dehors de cela est généralement semé de problèmes. Je l'ai vu fait, mais c'était un piratage et n'a pas produit de très bons résultats. P>
Thremently si vous rencontrez des problèmes de performance avec une construction maven (pas rare), il y a quelques choses que vous pouvez faire. Tout d'abord décomposer la construction et travailler là où se passe le moment. Mon expérience est que ce n'est généralement pas la compilation qui est le problème. Voici une liste de choses que j'ai vues ralentissement des constructions: p>
Essais de mauvaise qualité. Habituellement lent à démarrer des tests d'intégration composés avec des tests réellement des tests d'unités fonctionnant comme des intégrations. P> LI>
coobertura. Super outil, mais à cause de la façon dont Maven fonctionne, le plug-in Cobertura doit exécuter toutes les phases des ressources à la compilation à nouveau. Une fois, j'ai rasé 40% de rabais sur une longue construction Maven en écrivant un plugin pour arrêter les tests jusqu'à ce qu'ils sont gérés par la phase de Cobertura. P> Li>
sur le bâtiment. c'est à dire. y compris les sous-modules qui ne changent essentiellement jamais. Meilleur choix consiste à créer un profil qui inclut ces sous-mobules uniquement lorsque cela est nécessaire ou de casser une version complètement séparée. P> li>
Tests d'intégration longue. Si les tests d'intégration prennent beaucoup de temps, envisagez de les mettre dans un profil différent et une construction différente sur le serveur CI. Ensuite, votre construction principale peut aller plus vite permettant aux développeurs de revenir au travail plus tôt, tandis que les tests d'intégration peuvent courir moins souvent. P> LI>
Enfin - admettez que Maven est un porc de performance et de passer à quelque chose de plus rapidement. La fourmi est probablement toujours la plus rapide mais une douleur à configurer car vous devez tout configurer manuellement. Je suggérerais d'essais Grandle car il corrige beaucoup de problèmes que les fourmi et maven ont. Bien que d'être honnête, je n'ai effectué personnellement aucun test de performance. Mais cela vous donne un niveau de contrôle que Maven ne le fait pas. P> li> ul>
Merci pour les conseils Derek. Pour être honnête, je ne sais pas exactement quelles sont les différences, mais à coup sûr Eclipse et Maven ne génèrent pas les mêmes fichiers de classe, je viens de faire une comparaison. Notez également que je ne suis pas directement à l'aide d'un composant Eclipse dans une construction Maven, il s'agit d'un artefact plexus fait pour être utilisé de cette façon. Je suis très bien acceptable des performances maven, mon problème est que lorsque je construit avec Maven, Eclipse reconstruit l'espace de travail. C'est pourquoi je voudrais que je voudrais que Maven Country et Eclipse incrément de construction partagent le même compilateur.
Kool, j'ai vu ce problème. Il est généralement causé par le passage des paramètres de chemin de construction Eclipse à l'aide de cible / de classes et de classes cible / test. Parce que Maven Clean code> et
Maven Compiler CODE> manipule ces répertoires, Eclipse voit les modifications et suppose qu'il doit compiler. Un correctif efficace est de ne pas utiliser les mêmes répertoires. Dans Eclipse, vous pouvez également dire à Eclipse d'ignorer / masquer certains répertoires afin de ne pas voir les répertoires cibles de MAVENS.
Avoir une cible distincte pour Eclipse et Maven est ce que j'avais au début. Mais alors cela signifie que je dois compiler deux fois toute modification du code. C'est pourquoi j'ai fusionné la cible Eclipse et Maven Target en premier lieu. D'où ma question.
Assurez-vous d'utiliser la dernière version du En dehors de cela, la configuration devrait fonctionner. Vous pouvez essayer avec la dernière version 1.8.4 du En dehors de cela, vous devez comprendre que Maven a plusieurs types de dépendances. Dans votre cas, deux sont intéressants: dépendances de construction et de plugin. P>
Les premiers sont collectés dans le Maven-compiler-plugin code> (2.3.2 en ce moment, Voir cette page - c'est" Nom complet "ou les petites informations de la version dans le coin supérieur droit). P>
plexus-compiler-eclipse code>, aussi. P>
dépendances code> élément
tandis que Ce dernier doit être dans un PlugInManagement Code> Elément
. L'ajout d'un plugin à l'heure de construction ne sera pas l'effet que vous souhaitez. P>
Ceci est un ancien problème ouvert lié aux projets Maven Multi Module: http://jira.codehaus.org/browse/mcompiler-165 p>
Merci, oui, il semble expliquer pourquoi je ne pouvais pas construire un seul module avec le compilateur Eclipse. Cependant, contrairement au problème rapporté, je n'ai pas besoin d'avoir un compilateur différent pour différents modules. Je aurais donc dû pouvoir compiler tout le projet. Malheureusement, cela fait longtemps que j'ai quitté ce projet et je ne peux plus enquêter.