Comment utiliser IntelliJ IDEA pour le développement de plugin Eclipse?

je dois développer un plugin pour Eclipse mais je préfère IntelliJ idée comme IDE. Est-il possible de configurer IDEA pour le développement du plugin Eclipse?

39
demandé sur Justin 2014-10-01 21:06:26

2 réponses

cela devrait être possible en utilisant Eclipse Tycho.

vous utiliserez maven et cela fonctionne parfaitement avec IntellIj.

Tycho se concentre sur une approche Maven-centrée, manifeste-première à la construction Eclipse plug-in, features, update sites, RCP applications and OSGi bundles. Tycho est un ensemble de plugins Maven et d'extensions pour la construction Eclipse plugins et paquets OSGi avec Maven.

22
répondu maba 2014-10-01 17:12:18

Il pourrait être possible à l'aide de Osmorc, mais je n'ai pas essayé. Cependant, j'ai une méthode qui fonctionne (en utilisant IntelliJ 2017.1, mais elle devrait être similaire pour les autres versions). Il ne nécessite pas Eclipse Tycho, que je ne pouvais pas utiliser parce que mon plugin utilisé XCore qui ne semble pas compatible avec Tycho.

  • créer les projets dans Eclipse.
  • créer votre projet IntelliJ.
  • à l'Intérieur IntelliJ

    1. Fichier > nouveau > Module à partir de sources existantes. Sélectionnez votre projet eclipse.
    2. module d'Import de modèle externe

      enter image description here

    3. pour ne pas gâcher les projets Eclipse, j'ai sélectionné "Keep project and module files in ~/IdeaProjects/MyIntelliJProject

    4. Répétez l'opération pour chaque projet eclipse
  • ouvrir la Structure du projet ( Ctrl+ Alt+ Maj+ S)

  • dans" Global Libraries " (ou même simplement Libraries), ajouter une nouvelle bibliothèque Java.
  • Sélectionnez /opt/eclipse/plugins répertoire (ou partout où l'éclipse a été installé)
  • assurez-vous que chaque module a ceci ECLIPSE bibliothèque comme dernière dépendance.

à ce point, vous devriez être en mesure de coder et d'exécuter des tests dans IntelliJ, mais pour réellement exécuter le plugin, vous utiliser Eclipse. C'est un peu brouillon, mais.

ma solution était d'exécuter la même commande que Eclipse lorsque vous exécutez votre plugin:

  • Obtenir le BashSupport IntelliJ plugin (peut-être quelque chose d'autre sur Windows; peut-être que vous pouvez exécuter un fichier de commandes)
  • dans Eclipse, lancez votre plugin (Lancez Eclipse Application).
  • ouvrez la perspective de débogage. Vous devriez voir quelque chose comme ceci:

    Debug stack

  • clic Droit > propriétés sur le /usr/lib/jvm/... (peut être différent de Java JVM)

  • copier la ligne de commande:

    Process Properties

  • ailleurs, dans votre éditeur préféré, créez un nouveau fichier bash (je mets ce fichier dans mon dossier Projet IntelliJ), et collez cette commande là.

  • Note quand Eclipse exécute la commande, elle s'exécute à partir d'un répertoire de travail de /opt/eclipse/ (ou partout où l'éclipse est installé), donc nous avons besoin d'ajouter un cd /opt/eclipse/ à l'avance. Nous allons le faire dans un nouveau shell:

    (cd /opt/eclipse && /usr/lib/jvm/java-8-oracle/bin/java ...)
    

    si ce script bash est lancé, il devrait être le même que si nous avions couru depuis Eclipse.

  • dans IntelliJ, créez une nouvelle configuration D'exécution Bash ( Alt+ Maj+ F10 > Modifier Les Configurations D'Exécution). Faire de la Le champ" Script: "contient le chemin du fichier bash que nous venons de créer.

    ajouter également " Build Project "aux options" Before launch".

    de plus, cochez la case "instance unique seulement".

si nous exécutons maintenant cette configuration, elle devrait fonctionner. Cependant, nous ne pouvons toujours pas déboguer de L'intérieur IntelliJ. Cette correctifs:

  • créer une nouvelle configuration D'exécution IntelliJ de type "Remote", la marquant comme "single instance" seulement"
  • copier les "arguments en ligne de commande pour exécuter JVM à distance". Pour moi c'est

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    

    j'ai bien aimé le flux de travail pour suspend=y mieux; en gros, cela signifie que l'application eclipse ne démarre pas tant que nous n'attachons pas le débogueur.

  • Copiez votre fichier bash et ajoutez ces arguments:

    (cd /opt/eclipse && /usr/lib/jvm/java-8-oracle/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 ...)
    
  • ajouter une autre configuration Bash run pour IntelliJ qui exécute ce nouveau script (et exécute aussi "Build") Le projet " à l'avance, et est "instance unique seulement").

maintenant, pour déboguer votre plugin Eclipse, lancez la Configuration de Debug Bash, puis lancez votre Configuration distante.

à la fin, voici à quoi ressemblent mes configurations d'exécution:

enter image description here

a ce point, la seule chose pour laquelle Eclipse est nécessaire est d'éditer mon .xcore les fichiers depuis Eclipse génère du code Java à partir de cela, et XCore n'a pas un moyen d'être dirigé depuis le terminal.

9
répondu Justin 2017-04-05 20:18:26