Kaip pradėti nuo Maveno

„Maven“ pramonėje naudojamas labai dažnai, ir manau, kad būtų gerai aptarti šio straipsnio pagrindus, kad jį būtų galima efektyviai naudoti.

Šis straipsnis apims tokius dalykus kaip „Maven“ pagrindai, „Maven“ papildiniai, „Maven“ priklausomybės ir „Maven“ kūrimo gyvavimo ciklas.

Kas yra Mavenas

„Maven“ buvo sukurtas siekiant užtikrinti standartinį projektų kūrimo būdą. Viena iš galingų jo funkcijų yra priklausomybės valdymas.

„Maven“ dažniausiai naudojamas priklausomybės valdymui, tačiau tai nėra vienintelis dalykas, kurį jis sugeba.

Jei nežinote, ką reiškia priklausomybės valdymas, nesijaudinkite? Apžvelgsiu tai ir šiame straipsnyje.

„Maven“ diegimas

„Maven“ galite įdiegti iš //maven.apache.org/

Taip pat įsitikinkite, kad Mavenas yra nustatytas PATH, kad komandos mvnveiktų.

Galite patikrinti, ar jis įdiegtas ir ar prie jo galima pasiekti naudodami komandą

mvn -v

Taip pat įsitikinkite, kad „JAVA_HOME“ yra nustatytas.

Pagal numatytuosius nustatymus Maven naudos jdk, kurį pateikėte JAVA_HOME. Tai gali būti nepaisoma, tačiau šiam straipsniui naudosime jdk, pateiktą JAVA_HOME.

Sukurkite savo „Maven“ projektą

Paprastai IDE, pavyzdžiui, užtemimas, gali būti naudojamas lengvai sukurti sudėtingus projektus. Bet šiame straipsnyje aš vykdysiu komandas iš komandinės eilutės, kad veiksmai būtų aiškiai suprantami.

Norėdami sukurti projektą, vykdykite šią komandą.

mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.first.app -DartifactId=first-maven-app 

Archetipas aukščiau pateiktoje komandoje yra ne kas kita, o projekto šablono pavyzdys. groupdId nurodo, į kurią grupę patenka jūsų projektas, o artifactId yra projekto pavadinimas.

Paleidus aukščiau nurodytą komandą, gali prireikti maždaug minutės, kol atsisiųsite reikiamus papildinius ir sukursite projektą.

Dabar sukurtas aplankas „first-maven-app“. Atidarykite aplanką ir pamatysite failą, pavadintą pom.xml

pom.xml

POM reiškia projekto objekto modelį. „pom.xml“ yra visa išsami informacija apie jūsų projektą, ir čia jūs pasakysite mavenui, ką jis turėtų daryti.

Šio failo turinys parodytas žemiau:

  4.0.0 com.first.app first-maven-app jar 1.0-SNAPSHOT first-maven-app //maven.apache.org   junit junit 3.8.1 test   

„groupdId“ ir „ artifactId“ yra tos pačios vertės, kurias pateikėme komandinėje eilutėje.

pakuotė yra artefakto pakuotės formatas. Numatytoji vertė yra stiklainis . Tai gali turėti ir kitų vertybių, tokių kaip ausis, karas, degutas ir pan.

versija nurodo artefakto versijos numerį. Jei yra „ SNAPSHOT“ , tai rodo, kad versija vis dar yra dev ir gali būti nestabili. Jei versijos numeryje nėra „ SNAPSHOT“, tai yra tikroji leidimo versija.

pavadinimas yra projekto pavadinimas.

Toliau paaiškinsiu apie „Maven“ priklausomybes ir papildinius.

Super POM

pom.xml, kaip matote, yra gana mažas. Priežastis yra ta, kad daug konfigūracijos yra vadinamajame „Super POM“, kurį viduje palaiko Mavenas.

„pom.xml“ išplečia „Super Pom“, kad gautų visą „Super Pom“ konfigūraciją.

Vienas iš „Super Pom“ esančių konfigūracijų rodo:

  • Visas „Java“ šaltinio kodas yra src / main / java
  • Visas „Java“ testo kodas yra src / test / java

Čia paminėsiu tik šią konfigūraciją, nes šiame straipsnyje kalbėsime ir apie šaltinio kodą, ir su testo kodu.

Kodas

Visas čia aptartas kodas yra šiame repo: //github.com/aditya-sridhar/first-maven-app

Pridėkime paprastą „Java“ kodą. Sukurkite šią aplanko struktūrą:

src / main / java / com / test / app / App.java

„App.java“ yra „Java“ kodas, kurį mes pridėsime.

Nukopijuokite šį kodą į App.java:

package com.first.app; import java.util.List; import java.util.ArrayList; public class App { public static void main( String[] args ) { List items = new ArrayList(); items.add(1); items.add(2); items.add(3); printVals(items); System.out.println("Sum: "+getSum(items)); } public static void printVals(List items){ items.forEach( item ->{ System.out.println(item); }); } public static int getSum(List items){ int sum = 0; for(int item:items){ sum += item; } return sum; } } 

Tai paprastas kodas, turintis 2 funkcijas.

Tačiau reikia atkreipti dėmesį į tai, kad kodas naudoja „lambda“ išraiškas „ printVals“ funkcijos „ forEach“ cikle .

Norint paleisti „Lambda“ išraiškas reikia mažiausiai „Java 8“. Tačiau pagal numatytuosius nustatymus „Maven 3.8.0“ veikia naudojant „Java“ versiją 1.6.

Taigi mes turime liepti „maven“ naudoti „Java 1.8“. Norėdami tai padaryti, naudosime „Maven“ papildinius.

Mavenas įskiepiai

Norėdami nurodyti, kurią „Java“ versiją naudoti, naudosime „Maven Compiler“ papildinį. Prie pom.xml pridėkite šias eilutes:

 ...    org.apache.maven.plugins maven-compiler-plugin 3.8.0  1.8 1.8     ... 

Galite pamatyti, kad „Java“ šaltinio ir tikslinės versijos nustatytos kaip 1.8 .

Įskiepiai iš esmės gauna tam tikrus veiksmus. Kompiliatoriaus papildinys surenka šaltinio failus.

Visą pom.xml galite rasti čia.

Yra daug „Maven“ papildinių. Žinodamas, kaip gerai naudoti papildinius, „Maven“ gali būti naudojamas nuostabiems dalykams atlikti. ?

Maveno priklausomybės

Paprastai rašydami kodą naudosime daugybę esamų bibliotekų. Šios esamos bibliotekos yra ne kas kita, kaip priklausomybės. „Maven“ gali būti naudojamas lengvai valdant priklausomybes.

In the pom.xml of our project you can see the following dependency:

   junit junit 3.8.1 test  

This dependency is telling that we will be needing junit. Junit is used to write Unit Tests for Java code. Similarly a lot of other dependencies can be added.

Let’s say you want to handle JSON in the code. Then you can add the gson dependency as shown below:

 com.google.code.gson gson 2.8.5 

You can search for Maven artifacts in //search.maven.org

Transitive Dependencies

Let’s say you add a dependency A to the Project. Now A depends on a dependency called B. B depends on a dependency called C.

Since you are using A in the project, you will also need B and C.

But fortunately, it is enough if you add only A in pom.xml. Because Maven can figure out that A depends on B and that B depends on C. So internally Maven will automatically download B and C.

Here B and C are transitive dependencies.

Custom Maven Repository

All these dependencies are available in a Public Maven Central Repository //repo.maven.apache.org/maven2

It is possible that there are some artifacts which are private to your company. In this case, you can maintain a private maven repository within your organization. I won’t be covering this portion in this tutorial.

Adding the test class

Since the junit dependency is present in the project, we can add test Classes.

Create the following folder structure:

src/test/java/com/test/app/AppTest.java

AppTest.java is the Test Class.

Copy the following code into AppTest.java:

package com.first.app; import junit.framework.TestCase; import java.util.List; import java.util.ArrayList; public class AppTest extends TestCase { public AppTest( String testName ) { super( testName ); } public void testGetSum() { List items = new ArrayList(); items.add(1); items.add(2); items.add(3); assertEquals( 6, App.getSum(items) ); } }

This class tests the getSum() function present in the App Class.

Maven Build Lifecycle and Phases

Maven follows a build lifecycle to build and distribute artifacts. There are three main lifecycles:

  1. Default lifecycle: This deals with building and deploying the artifact.
  2. Clean lifecycle: This deals with project cleaning
  3. Site lifecycle: This deals with Site documentation. Will cover this in a different article.

A Lifecycle is made up of phases. Here are some of the important phases in the default lifecycle:

  • validate: Checks if all necessary information is available for the project
  • compile: Used to compile the source files. Run the following command to compile:
mvn compile
  • After running this command, a folder called target is created with all the compiled files.
  • test: Used to run all the unit tests present in the project. This is why the Junit dependency was needed. Using Junit, unit tests can be written. Test classes can be run using the command
mvn test
  • package: This will run all the above phases and then package the artifact. Here it will package it into a jar file since pom indicates a jar is needed. Run the following command for this:
mvn package
  • The jar file is created inside the target folder
  • verify: This will ensure that quality criteria is met in the project
  • install: This will install the package in a local repository. The local repository location is usually ${user.home}/.m2/repository. Use the following command for this:
mvn install
  • deploy: This is used to deploy the package to a remote repository

One more command which is commonly used is the clean command which is given below:

mvn clean

This command cleans up everything inside the target folder

References

Maven’s Offical Guide: //maven.apache.org/guides/getting-started/

More about POM : //maven.apache.org/guides/introduction/introduction-to-the-pom.html

More about Build Lifecycle : //maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Congrats ?

Jūs žinote, kaip dabar naudoti „Maven“. Šis straipsnis apėmė tik pagrindus, papildinius, priklausomybes ir kūrimo gyvavimo ciklą. Norėdami sužinoti daugiau apie „Maven“, patikrinkite anksčiau pateiktas nuorodas.

Laimingo kodavimo?

Apie autorių

Aš myliu technologijas ir stebiu šios srities pažangą. Taip pat man patinka padėti kitiems su savo technologijomis.

Nedvejodami susisiekite su manimi savo „LinkedIn“ paskyroje //www.linkedin.com/in/aditya1811/

Taip pat galite sekti mane twitteryje //twitter.com/adityasridhar18

Mano svetainė: //adityasridhar.com/

Iš pradžių paskelbta adresu adityasridhar.com.