-
Notifications
You must be signed in to change notification settings - Fork 13
IntelliJ:n plugin kehityksen vinkkejä ja ohjeita
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
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.
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.
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 persistointiin voi ottaa mallia esim. PersistentTmcSettings-luokasta.
Lisätietoa: http://www.jetbrains.org/intellij/sdk/docs/basics/persisting_state_of_components.html
Nappien lisäämiseksi tarvitsee tehdä kaksi asiaa:
-
Tekemällä luokan (mieluusti
actions
-pakettiin), joka perii Intellij:n openapinAnAction
-luokalta. -
Napin määrittäminen "actionina" plugin.xml-tiedostoon, joka sijaitsee hakemistossa
tmc-plugin-intellij/resources/META-INF/
. Näitä voi ryhmitellä pistämällägroup
in 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.
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.
-
.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.
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 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ä.