207 votes

Les classes Java d'Intellij IDEA ne se compilent pas automatiquement lors de la sauvegarde.

Hier, je suis passé d'Eclipse à Intellij.

J'utilise également jRebel avec Websphere Server 7.

Tout semble maintenant fonctionner à peu près correctement, sauf que lorsque je modifie un fichier Java, et frapper la sauvegarde Intellij n'est pas recompiler le fichier, afin que jRebel le récupère.

L'éclipse " Construire automatiquement La fonctionnalité " " a résolu ce problème.

Dans Intellij, je dois frapper CTRL + SHIFT + 9 de recompiler la classe concernée pour que jRebel la récupère. Si des changements sont effectués dans deux fichiers J'ai pour faire cela sur chacun des et comme Intellij utilise le mécanisme de sauvegarde de tout, il est assez difficile de savoir ce qu'il faut recompiler manuellement, ce qui ne m'intéresse pas vraiment non plus.

N'y a-t-il pas un moyen d'obliger Intellij à faire cela tout seul ?

11 votes

Pourquoi ne pas appuyer sur Ctrl + F9 ? Cela va construire l'ensemble du projet et si seulement deux fichiers ont été modifiés, ils seront reconstruits.

2 votes

J'avais peur que cela ne reconstruise tout. Je crois que la valeur par défaut est clear output on rebuild ... donc normalement cela ne fonctionne pas très bien...

5 votes

Elle le fait pas nettoyer avant de construire. C'est une construction incrémentale. Vous avez un autre choix pour reconstruire si vous le souhaitez.

286voto

dan Points 6944

MISE À JOUR
Pour les versions IDEA 12+, nous pouvons construire automatiquement les sources éditées si nous utilisons l'option de compilateur externe. La seule chose à faire est de cocher l'option "Make project automatically", située sous Compiler Settings.


Vous pouvez utiliser le plugin EclipseMode pour que IDEA compile automatiquement les fichiers enregistrés. Voir : http://www.jetbrains.com/idea/documentation/migration_faq.html pour plus de conseils lors de la migration depuis Eclipse.

12 votes

Il est ennuyeux de devoir installer un plugin pour cela. J'ai déjà passé hier et aujourd'hui sur ce sujet. J'aimerais qu'ils puissent simplement intégrer une option pour cela, je ne pense pas qu'Eclipse ait un brevet sur cette fonctionnalité, n'est-ce pas ? Je pourrais aussi remapper à CTRL + S pour faire en sorte qu'il enregistre automatiquement. Je vais essayer quelques options.

19 votes

C'est lent. C'est trop lent. Il y a beaucoup de place pour l'amélioration ! Je ne sais pas ce qu'il fait en arrière-plan, mais il faut à Intellij environ 3-4 secondes pour compiler un petit changement dans une seule classe. Même la commande "Compiler 'StartController.java'" pour une classe ne prend que 3 à 4 secondes. Eclipse le fait en moins de 100 millisecondes. Je vais tester à nouveau le plugin eclipse mode et décider de ce que je vais faire

36 votes

"faire un projet automatiquement" ne fonctionne que lorsque l'on n'exécute pas/ne débogue pas.

80voto

snovelli Points 52

Veuillez suivre les deux étapes :

1 - Activer Automake depuis le compilateur

  • Presse : ctrl + shift + A (Pour Mac + shift + A )
  • Type : make project automatically
  • Frappez : Enter
  • Activer Make Project automatically fonctionnalité

2 - Activer Automake lorsque l'application est en cours d'exécution

  • Presse : ctrl + shift + A (Pour Mac + shift + A )
  • Type : Registry
  • Trouver la clé compiler.automake.allow.when.app.running et le permettre ou cliquez sur la case à cocher à côté de lui

Note : Redémarrez votre application maintenant :)

Note : Cela devrait également permettre le rechargement en direct avec les devtools de Spring Boot.

2 votes

Parfait, c'est exactement ce que je cherchais =)

3 votes

Cela a également fonctionné pour moi avec spring-boot-devtools et IntelliJ IDEA 2016.2.5.

2 votes

Bien, donc cela semble fonctionner sur IntelliJ 2017.1.3, j'ai utilisé l'option 2 car c'est ce dont on a besoin avec les devtools de Spring Boot.

68voto

CrazyCoder Points 103123

AVERTISSEMENT

Mode Eclipse est obsolète et n'est pas compatible avec les récentes versions d'IDEA 12+. Si vous l'installez, l'IDE se bloquera à chaque modification de fichier et sera extrêmement lent.


IntelliJ IDEA n'utilise pas la construction automatique, il détecte les erreurs à la volée, pas via le compilateur. Un mode similaire à celui d'Eclipse sera disponible dans IDEA 12 :

Make project automatically

Utilisez Build | Make il invoque le processus make incrémental qui compilera uniquement les fichiers modifiés et dépendants (c'est très rapide).

Il existe également un Entrée FAQ qui pourrait vous aider.

Mise à jour de la fonctionnalité de fabrication automatique : Lorsque la configuration run/debug est en cours d'exécution, Make project automatically n'a aucun effet. Les classes sur le disque ne changeront que sur Build | Make . Il s'agit d'une décision de conception fondamentale car, à notre avis, les changements de classes sur le disque doivent toujours être sous le contrôle de l'utilisateur. Le make automatique n'est pas une copie de la fonctionnalité Eclipse, il fonctionne différemment et son but principal est de gagner du temps en attendant que les classes soient prêtes lorsqu'elles sont vraiment nécessaires (avant de lancer l'application ou les tests). Le make automatique ne remplace pas la compilation explicite que vous devez toujours déclencher comme dans le cas décrit dans cette question. Si vous recherchez un comportement différent, le plug-in EclipseMode dont le lien figure dans la FAQ ci-dessus serait un meilleur choix.

0 votes

Oui, je l'avais déjà vu avant, mais je l'avais écarté parce que c'était trop lent, avec le popup et tout. Je pensais que c'était pour autre chose. Je vais peut-être essayer, mais un CTRL + 9 est ennuyeux, mais je suppose que je pourrais le remapper en CTRL + S pour qu'il enregistre automatiquement.

0 votes

Merci pour la mise à jour. J'ai installé le plugin Eclipse Mode. Je n'ai pas ce dialogue... Ook... Intellij 12 ... bien, c'est bien que vous vous amélioriez. Est-ce qu'Intellij 12 est déjà sorti ?

0 votes

Le build de l'EAP est lié dans ma réponse, la version sera disponible en décembre.

39voto

tieTYT Points 15326

Vous pouvez faire un keymap ctrl+s pour sauvegarder ET compiler en une seule étape. Allez dans les paramètres de keymap et recherchez Compile .

3 votes

Merci, c'est ce que je préfère ! La compilation automatique dans intellij, et celle-ci aussi, mais au moins je vois quand elle se termine maintenant, est trop lente.

0 votes

Cela n'a pas fonctionné pour moi, le fait d'assigner CTRL+S à la compilation n'a pas permis de redémarrer mon serveur avec le bouton de débogage.

0 votes

Cela fonctionne pour moi, Intellij 2018.2. Il doit rechercher le projet de construction

20voto

andrusr Points 346

Il y a en fait aucune différence car tous deux ne nécessitent qu'un seul clic :

  • Eclipse : enregistrement manuel, compilation automatique.
  • IntelliJ : sauvegarde automatique, compilation manuelle.

La solution la plus simple c'est juste de s'y habituer. Car lorsque vous passez la majeure partie de votre journée dans votre IDE, mieux vaut avoir des habitudes rapides dans un seul endroit que des habitudes lentes dans plusieurs.

2 votes

Il existe un moyen d'améliorer l'expérience d'IntelliJ : sauvegarder et compiler pendant que vous basculez vers le navigateur

0 votes

Eclipse a la capacité d'ajouter des actions de sauvegarde, vous pouvez donc également faire des choses comme organiser les importations et formater le code lors de la sauvegarde. Faire toutes ces choses manuellement ajoute un nombre important de frappes au clavier et rend le processus plus sujet aux erreurs. Par exemple, vous ne pourrez jamais avoir de code non formaté si vous formatez à la sauvegarde dans Eclipse. Il est très facile d'oublier le formatage dans IntelliJ.

1 votes

@Max, IntelliJ exécute ces actions pendant le commit (qui à mon goût est le meilleur moment). Dans certains cas, il met également en évidence les problèmes de style de codage directement dans l'éditeur (par exemple, la conformité PEP8 pour python).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X