+ - 0:00:00

Maven

budapest.scala - 2014. július

1 / 24

Miért szeretjük?

2 / 24

Reg: – Elvették mindenünket a nyomorultak, kiszipolyoztak minket. És nem csak minket, apáinkat is. És apáink apáit is.
Loretta: – És apáink apáinak apáit is.
Reg: – Igen.
Loretta: – És apáink apáinak apáinak az apáit is. És...
Reg: – Jól van, Stan, ne lovald bele magad. És mit adtak nekünk mindezért cserébe?
Xerxes: – Vízvezetéket.
Reg: – Mit?
Xerxes: – Vízvezetéket.
Reg: – Ó, igen, igen. Azt ők adták, igen. Ez igaz.
3. katona: – És a csatornázást.
Loretta: – Ó, igen, a csatornázást. Ne feledd, milyen volt a város előtte!
Reg: – Jól van, elfogadom a vízvezetéket meg a csatornát. Ezt a két dolgot ők csinálták.
Matthias: – És az utakat.
Reg: – Persze, nyilvánvalóan az utakat. Ez nem is vita tárgya, ugyebár. De eltekintve az utaktól, a vízvezetéktől, a csatornáktól...
Katona: – Öntözés.
Xerxes: – Gyógyászat.
2. katona: – Oktatás.
Reg: – Jó, jó, elég volt. Elég.

3 / 24

Build tool

  • Alapértelmezett egység a projekt
  • Projekt leíró a pom.xml állomány
  • Maven koordinátákkal azonosított
  • Egy projekt kimenete lehetőleg egy artifact
4 / 24

Common interface for project build

  • Mindenki ismeri és használja
  • Akár egy nyílt forráskódú fejlesztésbe is könnyebb beszállni
  • Sonatype
  • Takari
    • Jason van Zyl
5 / 24

Convention over configuration

Convention over configuration

6 / 24

Pluginek

  • Újrafelhasználhatóság
  • MOJO
  • Goal: egyedi funkció, önmagában is futtatható
  • Plugin: összetartozó goal-ok

Maven plugin

7 / 24

Plugin és phase összerendelések

Maven plugin goalok phase-ekhez rendelése

8 / 24

Függőségek kezelése

  • Release és snapshot management
  • Tranzitív függések
  • Nearest definition
  • Conflict resolution
  • Version ranges
9 / 24

Repository

  • Local Maven Repository
  • Internal repositories: Nexus, Artifactory
  • Public repositories
10 / 24

Modularizáció

Modulok

11 / 24

Fejlesztés modularizált architektúrában

  • Csak egy modul fejlesztése
    • Modul indítása önmagában
    • Modul indítása alkalmazáson belül
  • Egyszerre több modul fejlesztése
  • Core projekt fejlesztése
  • Parent frissítése
12 / 24

Több, mint build tool

  • Archetype: projekt sablonok
  • Project management tool: riportok, site generálás
13 / 24

Toolset

  • NetBeans
  • Eclipse
  • IntelliJ IDEA
  • Jenkins
14 / 24

Fejlődik

  • Verzióban meghatározható property
  • Inkrementális fordítás
  • Aggressive parallelization, delta protocol
  • Generációk
  • Projekt leírása más nyelveken (polyglot support)
  • Konzolban futó shell eszköz
15 / 24

Java/Scala hibrid projekt

16 / 24

Java/Scala hibrid projekt

17 / 24

És miért nem szeretjük?

18 / 24

Körülményes

A probléma

  • Kötött

A megoldás

  • Hosszú xml állományok
  • Létező plugin használata vagy saját plugin fejlesztése
  • Ant
  • Groovy
19 / 24

pom.xml modularizációja

Adottság

  • Túl hosszú xml állományok és konfigurációk
  • Nincs többszörös öröklődés
  • Mixin hiánya: ún. okos import

Van helyette

  • import scope
  • profile
20 / 24

Multimodul projektek

Hol a baj?

  • Több modulból álló rendszer, különböző modul verziószámokkal

Mi a megoldás?

  • Külső eszköz, mely Mavent paraméterezetten hívja
21 / 24

Branch kezelés

Hol a baj?

  • Ne kavarodjanak az artifactok

Megoldás

  • Verziószámban a branch neve
22 / 24

Continuous Delivery ellentmondások

Hol a baj?

  • Minden build egy potenciális release
  • Maven release plugin
  • Integrációs tesztek futtatása külön pipeline stage

Mit tegyünk?

  • Maven versions plugin
  • Maven surefire plugin konfigurációja profile-ban
23 / 24

Lassú

Hol a baj?

  • Kapacitás véges, processzor, tárhely

Megoldás

  • Build optimalizáció
  • Vas, grid
24 / 24

Miért szeretjük?

2 / 24
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
b Toggle blackout mode
f Toggle fullscreen mode
c Clone slideshow
p Toggle presenter mode
w Pause/Resume the presentation
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow