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 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.
Projektekről információt a XML fájlokban tárolunk. Itt egy példa:
<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>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
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
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 ); } }
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/ `--...
mvn exec:java -Dexec.mainClass=hu.szit.my-app.App
mvn package
Létrejön egy .jar kiterjesztésű fájl:
my-app-1.0-SNAPSHOT.jar
mvn clean package
java -cp target/my-app-1.0-SNAPSHOT.jar hu.szit.app.App
mvn site
A target könyvtárban létrejön egy site könyvtár.
my-app/ `--target/ `--site/
mvn -Dtest=AppTest test
Csak egy metódus tesztelése:
mvn -Dtest=UsersServiceImpl#testSzamolHaromszog test
A függőségeket a <dependencies> elemek közzé tesszük.
Példa:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.11.0</version> </dependency> </dependencies>
A test függőségeit jelöljük meg, hogy csak a teszt számára szükséges.
Példa:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.10.2</version> <scope>test</scope> </dependency> </dependencies>
A függőségek közzé vegyük fel scope és systemPath elemekkel:
<dependency> <groupId>foo.bar</groupId> <artifactId>projectname</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${basedir}/lib/projectname-1.0.0.jar</systemPath> </dependency>