Kjør en Java Main Method i Maven

1. Oversikt

I denne korte opplæringen skal vi se hvordan du kjører vilkårlige hovedmetoder fra hvilken som helst Java-klasse ved hjelp av Maven.

2. Den exec-maven-plugin

La oss anta at vi har følgende klasse:

public class Exec {private static final Logger LOGGER = LoggerFactory.getLogger (Exec.class); public static void main (String [] args) {LOGGER.info ("Kjører hovedmetoden"); hvis (args.lengde> 0) {LOGGER.info ("Liste over argumenter: {}", Arrays.toString (args)); }}}

Og vi vil utføre hovedmetoden fra kommandolinjen via Maven.

For å gjøre dette kan vi bruke exec-maven-plugin. For å være mer spesifikk, exec: java Målet fra dette pluginet utfører den medfølgende Java-klassen med det tilhørende prosjektets avhengigheter som klassestien.

Å utføre hovedmetoden til Utfør klasse, må vi overføre det fullt kvalifiserte navnet på klassen til pluginet:

$ mvn kompilere exec: java -Dexec.mainClass = "com.baeldung.main.Exec" 02: 26: 45.112 INFO com.baeldung.main.Exec - Kjører hovedmetoden

Som vist ovenfor bruker vi exec.mainClass systemegenskap for å passere det fullt kvalifiserte klassenavnet.

Vi må også sørge for at klassestien er klar før du kjører hovedmetoden. Derfor kompilerer vi kildekoden før vi utfører hovedmetoden.

Vi kan oppnå det samme med vanlig java og javac. Dette kan imidlertid være tungvint når vi jobber med en ganske stor klassesti. Tvert imot,når du bruker dette pluginet, tar Maven seg automatisk av å fylle ut klassestien.

3. Bestått argumenter

Det er også mulig å overføre argumenter fra kommandolinjen til hovedmetoden. For å gjøre det, kan vi bruke exec.args systemegenskap:

$ mvn compile exec: java -Dexec.mainClass = "com.baeldung.main.Exec" \ -Dexec.args = "First Second" 02: 31: 08.235 INFO com.baeldung.main.Exec - Kjører hovedmetoden 02: 31: 08.236 INFO com.baeldung.main.Exec - Liste over argumenter: [First, Second]

Som vist ovenfor, sender vi en plass-skilt liste over argumenter. Videre kan vi bruke en kommaseparert liste over argumenter via exec.arguments systemegenskap:

$ mvn kompilere exec: java -Dexec.mainClass = "com.baeldung.main.Exec" \ -Dexec.arguments = "Hello World, Bye" 02: 32: 25.616 INFO com.baeldung.main.Exec - Kjører hovedmetoden 02: 32: 25.618 INFO com.baeldung.main.Exec - Liste over argumenter: [Hello World, Bye]

Disse to alternativene kan være nyttige når vi vil bruke skilletegnet (mellomrom eller komma) i selve argumentet.

4. Egendefinert konfigurasjon

Vi kan også eksplisitt erklære pluginavhengigheten i vår pom.xml. På denne måten kan vi bruke tilpassede og standardkonfigurasjoner.

For eksempel kan vi spesifisere en standard hovedklasse i programtilleggets konfigurasjon:

   org.codehaus.mojo exec-maven-plugin 3.0.0 com.baeldung.main.Exec 

Hvis vi ikke spesifiserer det fullstendige navnet på ønsket klasse, com.baeldung.main.Exec vil bli brukt:

$ mvn compile exec: java 02: 33: 14.197 INFO com.baeldung.main.Exec - Kjører hovedmetoden

Det er imidlertid fortsatt mulig å overstyre denne standardkonfigurasjonen via en eksplisitt utføre.hovedklasse systemegenskap.

Videre kan vi også spesifisere standard programargumenter i vår konfigurasjon:

 com.baeldung.main.Exec første sekund 

På denne måten trenger vi ikke å sende disse argumentene på kommandolinjen:

$ mvn clean compile exec: java 02: 34: 24.448 INFO com.baeldung.main.Exec - Kjører hovedmetoden 02: 34: 24.450 INFO com.baeldung.main.Exec - Liste over argumenter: [First, Second]

I tillegg til disse konfigurasjonene er det mye mer tilgjengelig som dekkes i den offisielle dokumentasjonen.

5. Konklusjon

I denne korte artikkelen så vi hvordan du kjører hovedmetodene fra kommandolinjen via exec-maven-plugin.

Som vanlig er alle eksemplene tilgjengelige på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found