Maven és Ant Build eszközök bemutatása
Apache Ant Inkább toolbox mint Framework, 100% Java-ban íródott Elődjének a Make-t tekinthetjük Apache Software Foundation egyik projektje , nyílt forráskódú szoftver A Build folyamat és függőségek leírásához build.xml fájlt használja Az Ant egy egyszerű platformfüggetlen eszköznek készült a Tomcat buildeléséhez Semmilyen konvenciót nem tartalmaz egy projekt könyvtárstruktúrájára nézve, meg kell neki mondani, hogy hol találja a forráskódot és, hogy hová tegye majd a bájtkódot Az Ant Procedurális, pontosan meg kell neki mondani, hogy mit és mikor csináljon (compile, copy, compress) és a sorrendet is meg kell határozni Nincs benne Lifecycle
build.xml
Egyik nagy előnye a Make-hez képest a Hordozhatóság Egy célt leíró akció shell parancsa Make-ben: Ant build fájlban az akciót leíró task:
Maven Egy Framework, ami nem csak a Buildelést egyszerűsíti le, hanem szoftver projektek menedzselésére is alkalmas POM.xml (Project Object Model) –be van leírva egy buildelendő projekt és annak függőségeit Mavenben vannak konvenciók a könyvtárstruktúrára nézve. (ha ezeket betartjuk nem kell feltüntetni a POM.xml-ben a forráskód illetve bájtkód helyét) Maven deklaratatív, pom.xml-t kell létrehozni és a forráskódot a buildelés folyamatáról a Maven gondoskodik Van LifeCycle (életciklus) a Mavenben
Maven goal (cél), Maven phase, Maven Lifecycle Az archetype :generate is egy goal (cél) Az archetype a plugin, ami tartalmazza a generate célt. A plugin tkpen, goal(cél)-ok gyűjteménye Maven Phase: például a package, install, deploy A Phase egy lépés a build folyamat életciklusában A Phase goal-ok,ra van leképezve Maven Lifecycle phasek rendezett szekvenciája
Maven Lifecyle (életciklus) http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html Alapötlet az, hogy az életciklusban phasek (compile, test, package) vannak és, hogy minden phase végrehajtásához minden azt megelőző célnak sikeresen végre kell hajtódnia. Ezt a phasek futtatásakor a Maven ellenőrzi. Maven projekt főbb életciklus fázisai: mvn install futtatásakor az összes előzőt futtatja a maven és ha a package nem futott le akkor az install sem fog
Maven pom.xml file project It is the root element of pom.xml file. modelVersion It is the sub element of project. It specifies the modelVersion. It should be set to 4.0.0. groupId It is the sub element of project. It specifies the id for the project group. artifactId It is the sub element of project. It specifies the id for the artifact (project). An artifact is something that is either produced or used by a project. Examples of artifacts produced by Maven for a project include: JARs, source and binary distributions, and WARs. version It is the sub element of project. It specifies the version of the artifact under given group. Element Description packaging defines packaging type such as jar, war etc. name defines name of the maven project. url defines url of the project. dependencies defines dependencies for this project. dependency defines a dependency. It is used inside dependencies. scope defines scope for this maven project. It can be compile, provided, runtime, test and system.
Egyszerű java-s alkalmazás generálása
Maven Repository A Maven a repositorykban keresi a függőségeket Local Reopistory: %USER_HOME%/.m2/repository Central Repository: apache maven community http://repo1.maven.org/maven2/ Remote Repository Olyan jar-okhoz, amik nincsenek benn a central repositoryban
Különbségek Maven és Ant között Ant doesn't has formal conventions, so we need to provide information of the project structure in build.xml file. Maven has a convention to place source code, compiled code etc. So we don't need to provide information about the project structure in pom.xml file. Ant is procedural, you need to provide information about what to do and when to do through code. You need to provide order. Maven is declarative, everything you define in the pom.xml file. There is no life cycle in Ant. There is life cycle in Maven. It is a tool box. It is a framework. It is mainly a build tool. It is mainly a project management tool. The ant scripts are not reusable. The maven plugins are reusable. It is less preferred than Maven. It is more preferred than Ant.
Köszönöm a Figyelmet!