instalar - ¿Cómo usar IntelliJ IDEA para el desarrollo de plugins de Eclipse?
sonarqube download (2)
Tengo que desarrollar un plugin para Eclipse, pero prefiero IntelliJ IDEA como IDE. ¿Es posible configurar IDEA para el desarrollo de plugins de Eclipse?
Debería ser posible usando Eclipse Tycho .
Usarás maven y eso funciona perfectamente con IntellIj.
Tycho se centra en un enfoque orientado a Maven centrado en la creación de complementos, funciones, sitios de actualización, aplicaciones RCP y paquetes OSGi de Eclipse . Tycho es un conjunto de complementos Maven y extensiones para compilar complementos Eclipse y paquetes OSGi con Maven.
Podría ser posible usar Osmorc , pero no lo he intentado. Sin embargo, tengo un método que funciona (usando IntelliJ 2017.1, pero debería ser similar para otras versiones). No requiere Eclipse Tycho, que no pude usar porque mi complemento usa XCore que no parece ser compatible con Tycho.
- Crea los proyectos en Eclipse.
- Crea tu proyecto IntelliJ.
Dentro de IntelliJ
Abra la estructura del proyecto ( Ctrl + Alt + Shift + S )
- En "Bibliotecas globales" (o incluso solo Bibliotecas), agregue una nueva biblioteca de Java.
- Seleccione el directorio
/opt/eclipse/plugins
(o donde esté instalado eclipse) - Asegúrese de que cada módulo tenga esta biblioteca
ECLIPSE
como la última dependencia.
En este punto, debe poder codificar y ejecutar pruebas en IntelliJ, pero para ejecutar realmente el complemento, debe usar Eclipse. Aunque es un poco desordenado.
Mi solución fue ejecutar el mismo comando que Eclipse cuando ejecuta su complemento:
- Obtenga el complemento BashSupport IntelliJ (puede tener que ser otra cosa en Windows, quizás pueda ejecutar un archivo por lotes)
- En Eclipse, ejecute su complemento (Ejecutar aplicación Eclipse).
Abra la perspectiva de depuración. Debería ver algo como esto:
Haga clic con el botón derecho> Propiedades en
/usr/lib/jvm/...
(puede ser Java JVM diferente)Copia la línea de comando:
En otro lugar, en su editor favorito, cree un nuevo archivo bash (pongo este archivo en mi carpeta de proyecto IntelliJ) y pegue este comando allí.
Tenga en cuenta que cuando Eclipse ejecuta el comando, se ejecuta desde un directorio de trabajo de
/opt/eclipse/
(o donde esté instalado eclipse), por lo que debemos agregar uncd /opt/eclipse/
antemano. Hagámoslo también en un nuevo caparazón:(cd /opt/eclipse && /usr/lib/jvm/java-8-oracle/bin/java ...)
Si se ejecuta este script bash, debería ser el mismo que si hubiéramos ejecutado desde Eclipse.
En IntelliJ, cree una nueva configuración de ejecución de Bash ( Alt + Shift + F10 > Editar configuraciones de ejecución). Haga que el campo "Script:" contenga la ruta al archivo bash que acabamos de crear.
Además, agrega "Build Project" a las opciones "Before launch".
Además, marque la casilla "Solo instancia única".
Si ahora ejecutamos esa configuración, debería funcionar. Sin embargo, todavía no podemos depurar desde dentro de IntelliJ. Esto soluciona eso:
- Cree una nueva configuración de ejecución IntelliJ de tipo "Remoto", marcándolo como "Solo instancia única"
Copie los "Argumentos de la línea de comando para ejecutar JVM remota". Para mí eso es
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Me gustó el flujo de trabajo para
suspend=y
mejor; básicamente significa que la aplicación de eclipse no se iniciará hasta que conectemos el depurador.Copie su archivo bash y agregue estos argumentos:
(cd /opt/eclipse && /usr/lib/jvm/java-8-oracle/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 ...)
Agregue otra configuración de ejecución Bash para IntelliJ que ejecuta este nuevo script (y también ejecuta "Build Project" de antemano, y es "Single instance only").
Ahora, para depurar su plugin de Eclipse, ejecute la configuración Debug Bash, luego ejecute su configuración remota.
Al final, así es como se ven las configuraciones de mi ejecución:
En este punto, para lo único que se necesita Eclipse es para editar mis archivos .xcore
ya que Eclipse genera código Java a partir de eso, y XCore no tiene forma de ejecutarse desde el terminal.