Voordat we ons gaan verdiepen in ANT, Maven of Gradle, moeten we eerst een paar dingen begrijpen die met hen te maken hebben.
Dependency: In het algemeen verwijst een afhankelijkheid naar wanneer iets een ander ding vereist om zelf uitgevoerd te worden. Simpel gezegd, “A” heeft een afhankelijkheid van “B” als “A” vereist “B” voor zijn succesvolle uitvoering. In de softwarewereld is een afhankelijkheid alles wat uw applicatie nodig heeft voor een succesvolle uitvoering. Het is in principe elke externe ondersteunende bibliotheek die nodig is voor de toepassing. bijvoorbeeld zuul, hystrix, lombok, jdbc, etc.
In eerste instantie, we gebruikt om afhankelijkheden te beheren door:
het jar-bestand van de vereiste bibliotheek handmatig downloaden van het internet en toe te voegen aan ons project.
het schrijven van een script dat automatisch de bibliotheek zal downloaden van een externe bron via het netwerk.
Problemen geconfronteerd voordat deze tools:
Het toevoegen van de afhankelijkheden door ze handmatig te downloaden van het internet is een zeer vermoeiende taak.
Onze scripts kunnen mislukken als de URL van de externe bron verandert via het internet.
Het is erg moeilijk om te identificeren en beheren van de transitieve afhankelijkheden in onze applicatie.
Dependency management tool: Het lost op en beheert de afhankelijkheden die nodig zijn voor de toepassing.
Build tool: Het automatiseert de creatie van uitvoerbare toepassingen uit de broncode. Het bouwen omvat het compileren, koppelen en verpakken van de code in een bruikbare of uitvoerbare vorm. Build automation omvat:
Downloading van afhankelijkheden
Compilatie van broncode in binaire code
Packaging van die binaire code
Running van tests
Deployment naar productiesystemen
Dependency management en build tools in java:
ANT + Ivy (2000/2004)
Maven (2004)
Gradle (2012)
Apache ANT (Another Neat Tool) is een open source project van Apache, uitgebracht in het jaar 2000. Het is een java-bibliotheek die wordt gebruikt voor het automatiseren van de bouwprocessen voor java-toepassingen. Het kan ook worden gebruikt voor het bouwen van niet-java applicaties. Het volgt het principe van “Configuratie boven conventie”. In Ant worden de verschillende fasen van het bouwproces “Targets” genoemd. ANT bouwbestanden zijn geschreven in XML en worden volgens afspraak “build.xml” genoemd. Het bevat drie elementen: project, target en task. Elk build bestand bevat één project. Elk ding in de build.xml staat onder het project element. Project bevat ten minste één doel (standaard). Target bevat een set van taken en definieert een specifieke staat van het bouwproces. Een taak is een stuk code dat kan worden uitgevoerd. Aan elk knooppunt kunnen attributen worden gekoppeld:
Attributen van Project:
Naam: De naam van het project.
Basedir: De hoofdmap voor het project en deze is optioneel.
Default: Het standaard doel voor de build. Het project kan een of meer targets hebben. Het wordt gebruikt om het standaard target van het project op te geven.
Attributen van Target:
Naam: De naam van de target.
Description: Een beschrijving over het target.
Depends: Lijst van alle targets, gescheiden door komma waar deze target van afhankelijk is.
Als: Het target wordt uitgevoerd als het attribuut waar is.
Tenzij: Het target wordt uitgevoerd als het attribuut niet is ingesteld.
Het belangrijkste voordeel van Ant is zijn flexibiliteit. Ant legt geen coderingsconventies of projectstructuur op aan de ontwikkelaar. Dit betekent dat Ant van ontwikkelaars eist dat ze alle commando’s zelf schrijven, wat soms leidt tot grote build-bestanden en moeilijk te onderhouden zijn. Aanvankelijk had Ant geen ingebouwde ondersteuning voor dependency management. Later adopteerde het Apache Ivy, ontwikkeld als sub-project van het Apache Ant project, voor afhankelijkheidsbeheer.
Apache Maven
Het is een dependency management en een build automation tool, uitgebracht in 2004. Het blijft XML gebruiken, maar overwint de nadelen door het principe van “Conventie boven configuratie” te volgen. Het vertrouwt op conventies en biedt voorgedefinieerde commando’s (doelen). Het configuratiebestand, dat instructies voor het bouwen en afhankelijkhedenbeheer bevat, heet volgens afspraak “pom.xml” en bevindt zich in de hoofdmap van het project.