Skip to content

IntelliJ:n plugin kehityksen vinkkejä ja ohjeita

Tuomo Oila edited this page Sep 5, 2016 · 9 revisions

Plugin muilla JetBrainsin IDE:illä

Jotta samaa pluginia voi testata muilla IDE:illä, täytyy moduulin SDK asettaa siksi, jolle sitä halutaan siirtää. SDK:n muuttaminen tapahtuu menemällä File --> Project Structure --> Modules --> tmc-plugin-intellij --> Dependencies ja valitsemalla Module SDK kenttään oikea SDK. SDK valitaan luomalla uusi SDK new-painikkeella ja sitten navigoimalla IDE:n asennuskansioon ja valitsemalla se. Tämän jälkeen kaikki toiminnallisuus jota toinen IDE ei tue on nähtävissä erroreina ja plugin on nyt ajettavissa uudessa IDE:ssä kun painaa play-painiketta olettaen että oikea RunConfiguration on pluginista tallennettu.

Lisätietoa: http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html

Pluginin riippuvuudet

Pluginilla olevat riippuvuudet on nähtävissä ja konfiguroitavissa menemällä File-valikkoon ja valitsemalla Project Structure. Tämän valikon vasemmalta kun valitsee Modules-näkymän, josta valitsee tmc-plugin-intellij-moduulin ja sen Dependencies välilehden avaamalla saa siis itse pluginin riippuvuudet näkyviin.

Pluginin pakkaaminen deploymenttia varten

Kun pluginin koodi on ladattu omalle koneelle ja käynnistetty IntelliJ:ssä niin että koodi kääntyy (ks. README-tiedoston ohjeet), valitse Build-valikosta vaihtoehto Prepare All Plugin Modules For Deployment. Seuraavaksi IntelliJ antaa sinun valita halutut moduulit - näitä on vaan yksi (tmc-plugin-intellij), valitse tämä.

IntelliJ luo zip-tiedoston pluginista hakemiston tmc-plugin-intellij juureen. Tämä tiedosto on siis täysin valmis asennettavissa oleva plugin.

Eri projektien ajaminen

Jotta erilaisia projekteja voi ajaa, täytyy luoda projektille omantyyppinen RunConfiguration. Asiasta tarkemmin http://www.jetbrains.org/intellij/sdk/docs/basics/run_configurations.html

Tietojen persistointi:

Tietojen persistointiin voi ottaa mallia esim. PersistentTmcSettings-luokasta.

Lisätietoa: http://www.jetbrains.org/intellij/sdk/docs/basics/persisting_state_of_components.html

Nappien/toimintojen lisääminen käyttöliittymään

Nappien lisäämiseksi tarvitsee tehdä kaksi asiaa:

  1. Tekemällä luokan (mieluusti actions-pakettiin), joka perii Intellij:n openapin AnAction-luokalta.

  2. Napin määrittäminen "actionina" plugin.xml-tiedostoon, joka sijaitsee hakemistossa tmc-plugin-intellij/resources/META-INF/. Näitä voi ryhmitellä pistämällä groupin sisälle.

Hieman samalla tavalla tapahtuu myös muunlaisten toimintojen lisääminen, esim. projektin avautuessa tapahtuu StartUpEvent-luokassa määritellyt toiminnot. StartUpEvent perii IntelliJ:n openapin StartupActivity-luokalta.

Version muuttaminen

Tällä hetkellä pluginin versio on kolmessa paikassa tiedossa: SettingsTMC-luokka (fi.helsinki.cs.tmc.intellij.io-paketissa) pom.xml-tiedosto plugin.xml-tiedosto (tmc-plugin-intellij/resources/META-INF/-hakemisto)

plugin.xml-tiedostossa määritelty versio on se, mikä näkyy käyttäjälle. SettingsTmc:n on se, mikä lähetetään TMC:lle tehtäviä tehdessä. Ainakin nämä kaksi kannattaa pitää ajan tasalla.

IntelliJ-spesifit tiedostot

  • .idea-hakemisto: Täällä on IntelliJ:n asetuksia yms. Mikäli projektiin lisätään mitään riippuvuuksia, niin ne myös lisätään .idea/libraries-hakemistoon automaattisesti.
  • tmc-intellij.iml-tiedosto: Tänne myös tulee riippuvuuksista tieto automaattisesti.
  • tmc-plugin-intellij/tmc-plugin-intellij.iml-tiedosto: Myös tänne tulee joistakin riippuvuuksista (tmc-plugin-intellij-moduulin tarvitsemat) tieto automaattisesti. Myös moduulin asetuksista (testihakemiston sijainti, lähdekoodi-hakemiston sijainti yms.) tulee hieman tietoa tänne.
  • tmc-plugin-intellij/resources/META-INF/plugin.xml-tiedosto: Tänne laitetaan kaikki halutut pluginin IntelliJ:hin lisäämät tapahtumat. Mikäli jotakin halutaan persistoida, niin myös nämä pitää määrittää tänne. Tiedostossa myös määritetään se, mitä käyttäjälle näkyy pluginin tiedoissa Jetbrainsin plugin-repositoriossa.
  • out-hakemisto: Tämä on gitissä ignoroitu, mutta paikallisesti jos projektin buildaa, tänne menee käännetty lähdekoodi.

Muita tiedostoja

Kannattaa huomata projektin juuressa oleva prepare-build.sh-tiedosto. Tämä on tosiaan seurausta siitä, että IntelliJ:n plugin-kehityksellä ei ole virallista tukea Mavenille, joten tämä (ainakin ymmärtääksemme) lataa IntelliJ:n lähdekoodin ja purkaa sen projektin target-hakemistoon, niin että Maven saa tarvittavat riippuvuudet.

Tällä ei ole käytännössä muuten väliä kuin CI-palvelimen kannalta, ja tietysti mikäli halutaan suorittaa testit paikallisesti komentorivin kautta Mavenilla.

Projektin rakenne

Projektin juuressa on hakemisto tmc-plugin-intellij, jossa on kaikki lähde- ja testikoodi sekä resurssihakemisto. IntelliJ:lle tämä on oma moduulinsa.

Muuten rakenteessa ei ole juuri mitään ihmeellisempiä.