Dit materiaal maakt deel uit van de serie "Inleiding tot Enterprise Development". Vorige artikelen: Deel 4. De basis van Maven - 1Maven is een tool voor het beheren en bouwen van projecten - de behulpzame assistent van een Java-programmeur. Het maakt het leven van ontwikkelaars gemakkelijker in elke fase van het werk: van het creëren van de projectstructuur en het verbinden van de benodigde bibliotheken tot het implementeren van het product op de server. U moet Maven gebruiken wanneer u met een raamwerk werkt. Laten we vandaag dus eens kijken naar de belangrijkste functies en kijken hoe we ze kunnen gebruiken.

Stapsgewijze installatie van Maven

  1. Eerst moeten we Maven installeren. Download het via deze link .

  2. Pak vervolgens het gedownloade archief uit en stel de omgevingsvariabele M2_HOME in op de locatie van het uitgepakte archief. Bijvoorbeeld C:\\Program Files\\maven\\

  3. Voer het volgende uit op de opdrachtregel om ervoor te zorgen dat alles is geïnstalleerd:

    mvn -versie

  4. Als de versie-informatie voor Maven, Java, enz. wordt weergegeven, is alles klaar voor gebruik.

  5. Open nu IntelliJ IDEA en maak een nieuw project aan. Selecteer Maven in het eerste venster:

    Deel 4. De basis van Maven - 2
  6. Klik op "Volgende" en vul het venster dat verschijnt in:

    Deel 4. De basis van Maven - 3
  7. Maak vervolgens, zoals gewoonlijk, een project aan waar u maar wilt.

    Nadat het project is gemaakt, let op de structuur:

    Deel 4. De basis van Maven - 4
Dit is de standaardstructuur van een Maven-project :
  • de map src/main/java bevat de Java-klassen
  • de map src/main/resources bevat de bronnen die door de toepassing worden gebruikt (HTML-pagina's, afbeeldingen, stijlbladen, enz.)
  • de map src/test is voor tests
Let ook op het bestand pom.xml . Dit is het hoofdbestand voor het beheren van Maven . De volledige projectbeschrijving is hier opgenomen. Er is op dit moment niet al te veel informatie, maar we zullen het nu toevoegen.

Afhankelijkheden beheren in Maven

U bent misschien de uitdrukking "afhankelijkheidsmanager" tegengekomen. Maven weet hoe hij afhankelijkheden moet beheren. Dankzij Maven hoeft u niet veel tijd te besteden aan het zoeken op internet naar een vereiste bibliotheek, deze te downloaden en vervolgens aan uw project te koppelen. In plaats daarvan voegt u gewoon de vereiste bibliotheek toe aan de lijst met afhankelijkheden in Maven.

Afhankelijkheden worden opgegeven in het afhankelijkhedenknooppunt van het bestand pom.xml

Stel dat u de Apache Commons IO-bibliotheek in uw project nodig heeft om het werken met bestanden te vereenvoudigen. Om een ​​bibliotheek toe te voegen, schrijven we vijf regels in pom.xml:

<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.6</version>
</dependency>
Nu zou uw pom.xml-bestand er als volgt uit moeten zien:

  <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
Laat IntelliJ IDEA daarna de afhankelijkheid importeren (er zou een dialoogvenster in de rechter benedenhoek moeten verschijnen). Nu is de bibliotheek klaar voor gebruik:

import org.apache.commons.io.FileUtils;

import java.io.File;

public class TestMaven {
   public static void main(String[] args) {
       File tempDirectory = FileUtils.getTempDirectory();
   }
}
Alle volgende afhankelijkheden moeten ook in de <dependencies>tag worden geschreven. U vraagt ​​zich misschien af ​​hoe u de informatie over de bibliotheek kunt vinden die u in de <dependency>tag moet aangeven. Dat is eenvoudig. Er moeten altijd drie parameters worden ingesteld: "groupId", "artifactId" en "version". Er zijn twee manieren om deze parameters te bepalen:
  1. Op de website van de bibliotheek. Als we de Apache Commons IO-bibliotheek nodig hebben, gaan we naar de officiële website en selecteren we het tabblad "Dependency Information". Alle benodigde informatie is hier — u kunt deze eenvoudig kopiëren en toevoegen aan het <dependencies>knooppunt.

  2. In een Maven-repository . Typ "apache commons io" in de zoekbalk en je ziet alle beschikbare versies van de bibliotheek. Nadat u de juiste hebt geselecteerd, kopieert u eenvoudig het volgende:

    
    <dependency>
               <groupId>commons-io</groupId>
               <artifactId>commons-io</artifactId>
               <version>2.6</version>
           </dependency>
    

    en voeg het toe aan je pom.xml.

Soorten Maven-opslagplaatsen

Het is voor ons de moeite waard om Maven-repository's nogmaals te noemen, omdat we er eigenlijk twee hebben: een externe (centrale) repository en een lokale (op je computer) repository. Alle bibliotheken die u aan uw projecten toevoegt, worden opgeslagen in de lokale repository. Wanneer Maven een vereiste afhankelijkheid aan een project toevoegt, wordt eerst gecontroleerd of de bibliotheek al bestaat in de lokale repository. Het heeft alleen toegang tot de externe repository als het de bibliotheek niet lokaal vindt. Zoals u kunt zien, kunt u Maven gebruiken om afhankelijkheden toe te voegen, maar dit is niet alles wat het kan doen.

Een Java-project bouwen met Maven

Deze mogelijkheid lijkt misschien zinloos voor een beginner. Waarom hebben we dit nodig als we een IDE hebben? Laat het me uitleggen. Ten eerste heeft de server waarop u uw applicatie moet bouwen mogelijk geen ontwikkelomgeving of grafische interface. Ten tweede, bij grote projecten kan Maven het project beter bouwen. Dus zonder verder adieu, zullen we het proces van het bouwen van een applicatie met Maven overwegen.

fasen

Het proces van het bouwen van een applicatie staat bekend als de levenscyclus van een Maven-project en bestaat uit fasen. Je kunt ze bekijken in IDEA door te klikken op Maven > voorbeeld > Levenscyclus in de rechterbovenhoek: Deel 4. De basis van Maven - 5Zoals je kunt zien zijn er 9 fasen:
  1. schoon - verwijdert alle gecompileerde bestanden uit de doelmap (de plaats waar voltooide artefacten worden opgeslagen)
  2. valideren — controleert of alle informatie die nodig is om het project op te bouwen aanwezig is
  3. compileren — compileert broncodebestanden
  4. test — start tests
  5. pakket — pakketten gecompileerde bestanden (in een JAR, WAR, etc. archief)
  6. verifiëren — controleert of het ingepakte bestand gereed is
  7. install — plaatst het pakket in de lokale repository. Nu kan het door andere projecten worden gebruikt als een externe bibliotheek
  8. site — maakt projectdocumentatie
  9. deploy — kopieert het gebouwde archief naar de externe repository
Alle fasen worden opeenvolgend uitgevoerd: de vierde fase kan bijvoorbeeld pas worden gestart als fase 1-3 is voltooid. Er zijn twee manieren om een ​​fase te starten:
  • via de opdrachtregel:

    mvn-pakket

    Deel 4. De basis van Maven - 6
  • met behulp van IntelliJ IDEA:

    Deel 4. De basis van Maven - 7

    Voordat de pakketfase begint, worden de validatie-, compileer- en testfasen uitgevoerd. De schone fase is een uitzondering. Het is een goed idee om deze fase uit te voeren vóór elke build van het project. U kunt meerdere fasen vermelden, gescheiden door spaties:

    mvn schoon pakket.

Elke fase heeft ook pre- en post-fasen: bijvoorbeeld pre-deploy, post-deploy, pre-clean, post-clean, enz. maar deze worden vrij zelden gebruikt. Daarnaast heeft elke fase doelen. Standaarddoelen worden standaard gesteld. Extra doelen worden toegevoegd door Maven-plug-ins. Soms moet u tijdens een fase extra functies uitvoeren. Hiervoor zijn Maven-plug-ins. Een lijst met officiële plug-ins is te vinden op de Maven-website . Maar u moet weten dat er veel aangepaste plug-ins zijn die te vinden zijn op websites van derden. En als er een exotische behoefte ontstaat, kun je natuurlijk altijd zelf een plug-in op maat schrijven .

Plug-ins

Om een ​​Maven-plug-in aan het project toe te voegen, moeten we de beschrijving ervan toevoegen aan het pom.xml-bestand, met behulp van <build>en <plugins>tags, vergelijkbaar met hoe we afhankelijkheden hebben toegevoegd. Stel dat we een plug-in nodig hebben om te verifiëren dat we de nieuwste versie van al onze externe bibliotheken gebruiken. Na een beetje zoeken op internet, zou je deze plug-in en instructies voor het gebruik ervan kunnen vinden. Laten we de groupId, artifactId en version instellen. We geven aan aan welke doelen de plugin moet voldoen en in welke fase. In ons geval is de afhankelijkheidscontrole in de huidige pom.xml ingesteld tijdens de validatiefase. Nu ziet ons pom.xml-bestand er als volgt uit:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <build>
       <plugins>
           <plugin>
               <groupId>com.soebes.maven.plugins</groupId>
               <artifactId>uptodate-maven-plugin</artifactId>
               <version>0.2.0</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>dependency</goal>
                       </goals>
                       <phase>validate</phase>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
We konden verder werken aan ons project. Maar laten we proberen de versie van Apache Commons IO te wijzigen in 2.0 en het project te bouwen. We zullen krijgen

[ERROR] Failed to execute goal com.soebes.maven.plugins:uptodate-maven-plugin:0.2.0:dependency (default) on project example: There is a more up-to-date version ( 2.6 ) of the dependency commons-io:commons-io:2.0 available. -> [Help 1]
Hier hebben we een build-fout gegenereerd door de plug-in. De foutmelding geeft aan dat we versie 2.0 gebruiken wanneer versie 2.6 beschikbaar is. Kortom, Maven is een erg handig hulpmiddel. Misschien lijkt het in het begin moeilijk om te gebruiken, maar oefen! Creëer uw projecten met Maven en na een tijdje zult u zeer tevreden zijn met het eindresultaat. Dit artikel heeft met opzet veel details over Maven weggelaten — we hebben ons gericht op de meest essentiële. Maar er is geen limiet aan verbetering: u kunt meer lezen over Maven op de officiële website . Deel 5. Servlets en de Java Servlet API. Een eenvoudige webapplicatie schrijven Deel 6. Servlet-containers Deel 7. Introductie van het MVC-patroon (Model-View-Controller)