[[oktatas:programozás:java|< Java]] ====== maven ====== * **Szerző:** Sallai András * Copyright (c) 2014, Sallai András * Szerkesztve: 2014, 2020, 2022 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== A Mavenről ===== A Java projektek számára kitalált összeszerkesztő, menedzselő eszköz. Ha **Visual Studio Code** kódszerkesztőt használunk a **Maven** támogatás **bővítmény formájában** telepíthető. Az újabb **Netbeans** alapértelmezetten **tartalmazza a Maven**-t. De használható önálló eszközként is. Itt most az **önálló használatról** lesz szó. Linux alatt a maven csomagot kell telepíteni. Telepítés után kapunk egy **mvn** parancsot. ===== Telepítés ===== Telepítés Linuxon: apt install maven Telepítés Windowson, a Chocolatey csomagkezelővel: choco install maven -y Ellenőrizzük a verziót: mvn --version Windowson ha Chocolatey csomagkezelővel telepítettük, csak új parancsablakban érhető el a parancs. ===== Példa ===== Projektekről információt a XML fájlokban tárolunk. Itt egy példa: 4.0.0 com.mycompany.app my-app jar 1.0-SNAPSHOT Maven Quick Start Archetype http://maven.apache.org junit junit 3.8.1 test ===== Projekt generálása ===== Egy projekt generáláshoz kiterjedt kapcsolókat kell használni: mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=hu.valami.my-app \ -DartifactId=my-app ==== Eredmény ==== my-app/ |--src/ | |--main/ | | `--java/ | | `--hu/ | | `--valami/ | | `--my-app/ | | `--App.java | `--test/ | `--java/ | `--hu/ | `--valami/ | `--my-app/ | `--AppTest.java `--pom.xml package hu.szit.my-app; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } } package hu.szit.my-app; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase { /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) { super( testName ); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite( AppTest.class ); } /** * Rigourous Test :-) */ public void testApp() { assertTrue( true ); } } ==== Fordítás ==== cd my-app mvn compile A my-app könyvtárban létrejön egy target könyvtár. my-app/ |--... `--target/ |--classes/ | `--... |--generated-sources/ | `--... `--maven-status/ `--... ==== Futtatás ==== mvn exec:java -Dexec.mainClass=hu.szit.my-app.App ==== Csomag készítés ==== mvn package Létrejön egy .jar kiterjesztésű fájl: my-app-1.0-SNAPSHOT.jar mvn clean package ==== Futtatás ==== java -cp target/my-app-1.0-SNAPSHOT.jar hu.szit.app.App ==== Webhely készítése ==== mvn site A target könyvtárban létrejön egy site könyvtár. my-app/ `--target/ `--site/ ==== Teszt futtatása ==== mvn -Dtest=AppTest test Csak egy metódus tesztelése: mvn -Dtest=UsersServiceImpl#testSzamolHaromszog test ===== Függőségek ===== A függőségeket a elemek közzé tesszük. Példa: com.google.code.gson gson 2.11.0 ==== Teszt függőség ==== A test függőségeit jelöljük meg, hogy csak a teszt számára szükséges. Példa: com.google.code.gson gson 2.11.0 org.testng testng 7.10.2 test ===== JAR fájl helyi könyvtárból ===== A függőségek közzé vegyük fel scope és systemPath elemekkel: foo.bar projectname 1.0.0 system ${basedir}/lib/projectname-1.0.0.jar ===== Maven tároló ===== * https://mvnrepository.com/ * https://central.sonatype.com/ ===== Linkek ===== * https://maven.apache.org/ * https://maven.apache.org/guides/ * https://maven.apache.org/guides/getting-started/index.html#How_do_I_compile_my_application_sources * https://www.vogella.com/tutorials/ApacheMaven/article.html (2020)