Äventyr i molnet – del 2

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Inledning

Google har en Eclipse-plugin som automatiserar bygge, integrationstest & driftsättning av applikationer för Google App Engine.

Men hur gör man om man liksom jag tycker att det skall gå att bygga och driftsätta från kommandoraden? Eller om man inte använder Eclipse?

Mitt svar är Maven. Tyvärr finns det inte (ännu) någon Mavenplugin, så det blir lite meckigt att få det att fungera.

Varför är detta viktigt?

Missförstå mig inte, jag tycker att det är suveränt att kunna bygga och testa inifrån Eclipse.

Men det är samtidigt väldigt bra att ha ett byggskript som går att köra obemannat från kommandoraden av följande anledningar:

  • Continuous Integration – bygg automatiskt från t.ex. Hudson efter varje incheckning
  • Dokumentation – ditt byggskript dokumenterar på ett körbart och förhoppningsvis portabelt sätt vad som behövs för att kunna bygga och leverera din produkt.
  • Stöd för andra IDE:er än Eclipse. IntelliJ till exempel har mycket bra stöd för Maven.

Varför inte Ant?

Google levererar Ant-stöd för GAE. Jag gillar dock Maven bättre, eftersom det är deklarativt. Beskriv vad du vill uppnå så tar Maven hand om resten. Convention over configuration. Med Ant måste du skriva XML för varenda litet steg i bygget. Ingenting sker automatiskt.

Så vad behövs då för att bygga och integrationstesta med Maven?

Följande förutsättningar måste vara uppfyllda för att det skall gå att 1) bygga, 2) integrationstesta och 3) driftsätta till GAE med hjälp av Maven:

  1. GAEs jar-filer måste vara nedladdningsbara från något Maven-lager (eng. repository).
  2. GAEs integrationstestmiljö måste finnas tillgänglig för Mavens integrationstestfas.
  3. Maven måste instrueras hur man laddar upp den färdiga war-filen till GAE för driftsättning.

Tyvärr är det ingen av dessa punkter som uppfylls på ett bra sätt i dagsläget!

Det finns dock sätt att lösa det:

  1. GAE-jarerna kan installeras i ditt lokala Maven-repo med ‘mvn install-file …’ eller (om ditt företag har ett eget Maven-lager) ‘mvn deploy-file …’
  2. Maven kan delegera till Googles Antskript.

Steg 1 är trivialt, och behöver bara göras en gång per maskin och GAE-version. Steg 2 är det meckiga. En hel del XML blir det…

Hav tröst!

Google brukar publicera sina artefakter på det centrala Maven-repot. GAE-jarerna kommer att finnas där också. Dock oklart när.

Google App Engine-killarna jobbar ihop med "Mr Maven" – Jason van Zyl på Sonatype – med att ta fram en riktigt Maven-plugin som täcker hela utvecklingskedjan.

Så därför har jag bestämt mig för att strunta i integrationstest & deploy från Maven så länge. Jag nöjer mig med att kunna göra det inifrån Eclipse. Projektet är trots allt ett hobbyprojekt, och därmed kan man lägga byggribban lägre.

Härnäst: val av webbramverk och persistens-API

One comment

  • 1
    2009-12-02 - 09:40 | Permalink

    Hm. När jag pysslade med GAE så fanns det faktiskt något maven-repo men jag minns inte var.
    Hittade en gammal pom.xml med följande:



    com.google.appengine
    datanucleus-appengine
    1.0.0.final



    com.google.appengine
    appengine-api
    1.0-sdk-1.2.0

    HSH följer ditt vidare äventyr.

  • Leave a Reply

    Your email address will not be published. Required fields are marked *