AZ APACHE MAVEN ÉLETE ÉS HALÁLA! Cservenák Tamás
MI AZ APACHE MAVEN?! Build tool Mint az Ant? Dependency management tool Hasonló mint Ivy? Site management tool Csak egy plugin a sok közül
MI VALÓJÁBAN AZ APACHE MAVEN?! Szoftverfejlesztési Modell sztenderd projekt layout, build lifecycle és a függőségek tárolásása és megszerzése Fejlesztési és infrastrukturális minták mivel modell alapú, koherencia a folyamatok és tooling szintjén vs ad-hoc, organikus Csapatszintű együttműködés és produktivitás a fejlesztő ne az infrastruktúrával foglalkozzon, produktivitás vs hekkelés,
SOFTWARE DELIVERY CHAIN! IDE / CLI SCM CI Repository Build Central Provisioner Agent Agent Agent
SOFTWARE DELIVERY CHAIN! A fejlesztési infrastruktúrám merőben más? NEM A fejlesztési infrastruktúra része a piaci versenyelőnyömnek? NEM
A MAVEN CÉLKITŰZÉSEI! Standards and Best Practices for SDCs pushes best practice down to the level of the SDC Provide a shared language for SDC management tasks of initializing and maintaining SDCs aren t performed from scratch over and over Create healthy and robust build infrastructures periods of high change, releases, deadlines.
A MAVEN VILÁGA! Project Object Model descriptor / Inheritance Standard Project Layout / Convention over Configuration Dependency Management and Mediation Modularity / Best Practices / Reuse Binary Artifact Repository Standard Software Delivery Chain / Infrastructure
AZ ÚJÍTÁSOK! Build futási idő Incremental build Modern hardver adottságainak kihasználása (multicore) Remote repository roundtrips Continuous Delivery Generations and Workspaces Atomic deploys Branched development
INCREMENTAL BUILD! Az Eclipse m2e már tudta ezt, most ez kerül vissza a Maven-be BuildContext: tudatni a keretrendszerrel mit olvasunk és mit írunk A keretrendszer megfejti, bogy mit kell újra build-elni Sok meglévo Mojo-k módosítása Eclipse JDT incremental compiler integráció, compiler plugin
PARALLELISATION! Maven Core refaktorálva, Builder interfész Új lehetőségek tárházát nyitja meg, az eddigiekhez képest Meglévő stratégiák: Single-threaded, Multi-threaded (és Weave ) Új stratégiák, kombinálva a Maven Profiler-rel
EXISTING PARALLELISATION!
AGRESSIVE PARALLELISATION!
AGRESSIVE PARALLELISATION! + MAVEN BUILD PROFILER
GENERATIONS & WORKSPACES! A generation is a binary representation of your SCM at given point in time on a given branch Félúton a RELEASE és a SNAPSHOT között (de inkább release) Körbejárja az egész SDC-t A Continuous Delivery alapja Inkrementális REV:BRANCH
GENERATIONS & WORKSPACES! SCM SCM SCM SCM rev100:branchx rev101:branchx rev102:branchx rev103:brancx Generation 100 Generation 101 Generation 102 Generation 103
GENERATIONS & WORKSPACES! IDE / CLI SCM CI Felhasználás Repository Build Előállítás Provisioner Agent Agent Agent
GENERATIONS & WORKSPACES! Fejlesztői oldalon A Workspace hasonló mint az Eclipse Workspace Ugrás generációrol generációra (tehát rev és branch) Projekt részhalmazán dolgozni (forrás vs binary)
GENERATIONS & WORKSPACES! Delta Protocol download és deploy, inkrementális Atomic deploy Hardlinking, sparse
MINDEN MÁS! Polyglot Maven: DSLs in Ruby, Groovy, Scala, YAML and Atom Maven Shell: does all as m2eclipse from a shell
AETHER ÚJDONSÁGOK! Local repository caches published and holds non-published artifacts Safe concurrent access (multiple processes RW) Osztott local repository (local vs remote, snapshot vs release) Remote repository source of the published artifacts E-Tag HTTP fejléc használata (HTTP kérések száma feleződik) Aether Transport: okhttp, HttpClient 4.x MRM barát HTTP implementáció: 202 Accepted
...because Maven just isn't going to die. Jason Van Zyl