Kako započeti s Mavenom

Maven se vrlo često koristi u industriji i smatrao sam da bi bilo dobro u ovom članku pokriti osnove kako bi se mogao učinkovito koristiti.

Ovaj će članak pokriti stvari poput osnova mavena, dodataka za maven, ovisnosti o Mavenu i životnog ciklusa mavena.

Što je Maven

Maven je stvoren kako bi pružio standardni način na koji se mogu graditi projekti. Jedna od njegovih moćnih značajki je upravljanje ovisnostima.

Maven se obično koristi za upravljanje ovisnostima, ali nije jedino što je sposoban učiniti.

Ako ne znate što znači upravljanje ovisnostima, ne brinite ?. To ću pokriti i u ovom članku.

Instaliranje Mavena

Maven možete instalirati s //maven.apache.org/

Također osigurajte da je Maven postavljen u PATH tako da mvnkomande rade.

Možete provjeriti je li instaliran i može li mu se pristupiti pomoću naredbe

mvn -v

Također provjerite je li postavljen JAVA_HOME.

Prema zadanim postavkama, Maven će koristiti jdk koji ste naveli u JAVA_HOME. To se može nadjačati, ali za ovaj ćemo članak koristiti jdk naveden u JAVA_HOME.

Stvorite svoj Maven projekt

Obično se IDE poput eclipse može koristiti za lako stvaranje maven projekata. Ali u ovom članku izvodit ću naredbe iz naredbenog retka kako bi se koraci jasno razumjeli.

Pokrenite sljedeću naredbu za stvaranje projekta.

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

Arhetip u gornjoj naredbi nije ništa drugo doli uzorak predloška projekta. groupdId govori u koju grupu spada vaš projekt, a artifactId je naziv projekta.

Jednom kada pokrenete gornju naredbu, potrebno je oko minutu da preuzmete potrebne dodatke i izradite projekt.

Sada je stvorena mapa pod nazivom first-maven-app. Otvorite mapu i vidjet ćete datoteku pod nazivom pom.xml

pom.xml

POM je kratica od Project Object Model. pom.xml sadrži sve pojedinosti o vašem projektu i ovdje ćete reći Mavenu što treba učiniti.

Sadržaj ove datoteke prikazan je u nastavku:

  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 i artifactId iste su vrijednosti koje smo dali u naredbenom retku.

pakiranje je format paketa artefakta. Zadana vrijednost je jar . Može imati i druge vrijednosti poput uha, rata, katrana i tako dalje.

inačica označava broj verzije artefakta. Ako je prisutan SNAPSHOT , to znači da je verzija još uvijek u razvoju i možda neće biti stabilna. Ako broj verzije nema SNAPSHOT, to je stvarna verzija izdanja.

name je naziv projekta.

O ovisnostima i dodacima objasnit ću u Mavenu u nastavku.

Super POM

pom.xml kao što vidite prilično je mali. Razlog tome je što je velik dio konfiguracije prisutan u nečemu što se naziva Super POM, a koje Maven interno održava.

pom.xml proširuje Super Pom kako bi dobio sve konfiguracije prisutne u super pomu.

Jedna od konfiguracija prisutnih u Super Pomu označava sljedeće:

  • Sav izvorni kod Java prisutan je u src / main / javi
  • Sav Java test kôd prisutan je unutar src / test / java

Ovdje spominjem samo ovaj config, jer ćemo se u ovom članku baviti i izvornim kodom i testnim kodom.

Kodirati

Cjelokupni ovdje raspravljeni kod dostupan je u ovom izvješću: //github.com/aditya-sridhar/first-maven-app

Dodajmo neki jednostavni Java kôd. Stvorite sljedeću strukturu mape:

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

App.java je Java kôd koji ćemo dodati.

Kopirajte sljedeći kod u 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; } } 

Ovo je jednostavan kod koji ima dvije funkcije.

Ali jedna stvar koju treba primijetiti je da kôd koristi lambda izraze unutar forEach petlje u funkciji printVals .

Lambda izrazi trebaju najmanje Java 8 za pokretanje. No, prema zadanim postavkama Maven 3.8.0 radi pomoću Java verzije 1.6.

Stoga moramo reći mavenu da umjesto toga koristi Javu 1.8. Da bismo to učinili, koristit ćemo Maven dodatke.

Maven dodaci

Upotrijebit ćemo dodatak Maven Compiler da naznačimo koju ćemo Java verziju koristiti. U pom.xml dodajte sljedeće retke:

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

Možete vidjeti da su izvorna i ciljna inačica Java postavljene na 1.8 .

Dodaci u osnovi daju neke radnje u mavenu. Dodatak kompajlera kompajlira izvorne datoteke.

Cijeli pom.xml dostupan je ovdje.

Dostupno je puno dodataka za maven. Znajući kako se dobro koristiti dodatke, Maven se može koristiti za činjenje nevjerojatnih stvari. ?

Ovisnosti Mavena

Tijekom pisanja koda obično ćemo koristiti puno postojećih knjižnica. Te postojeće knjižnice nisu ništa drugo doli ovisnosti. Maven se može koristiti za jednostavno upravljanje ovisnostima.

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 ?

You know how to use Maven now. This article covered just the basics of pom, plugins, dependencies and build lifecycle. To know more about Maven check the links I have given above.

Happy Coding ?

About the author

I love technology and follow the advancements in the field. I also like helping others with my technology knowledge.

Feel free to connect with me on my LinkedIn account //www.linkedin.com/in/aditya1811/

You can also follow me on twitter //twitter.com/adityasridhar18

My Website: //adityasridhar.com/

Originally published at adityasridhar.com.