[[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)