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
NEW!
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
NEW!
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
NEW!
EXISTING PARALLELISATION!
NEW!
AGRESSIVE PARALLELISATION!
NEW!
AGRESSIVE PARALLELISATION ! + MAVEN BUILD PROFILER
NEW!
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
NEW!
GENERATIONS & WORKSPACES! SCM SCM SCM SCM rev100:branchX rev101:branchX rev102:branchX rev103:brancX
Generation 100
Generation 101
Generation 102
Generation 103
NEW!
GENERATIONS & WORKSPACES! IDE / CLI
SCM
CI
Repository
Build
NEW!
Felhasználás 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)
NEW!
GENERATIONS & WORKSPACES!
“Delta Protocol” — download és deploy, inkrementális Atomic deploy Hardlinking, sparse
NEW!
MINDEN MÁS!
Polyglot Maven: DSLs in Ruby, Groovy, Scala, YAML and Atom Maven Shell: “does all as m2eclipse from a shell”
NEW!
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
NEW!
“...because Maven just isn't going to die.” –Jason Van Zyl