Java >> Java tutorial >  >> Tag >> maven

køre hovedklassen af ​​Maven-projektet

Prøv maven-exec-plugin'et. Derfra:

mvn exec:java -Dexec.mainClass="com.example.Main"

Dette vil køre din klasse i JVM. Du kan bruge -Dexec.args="arg0 arg1" at sende argumenter.

Hvis du bruger Windows, skal du anvende anførselstegn for exec.mainClass og exec.args :

mvn exec:java -D"exec.mainClass"="com.example.Main"

Hvis du gør dette regelmæssigt, kan du også tilføje parametrene i pom.xml:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>com.example.Main</mainClass>
    <arguments>
      <argument>foo</argument>
      <argument>bar</argument>
    </arguments>
  </configuration>
</plugin>

Selvom maven exec gør tricket her, fandt jeg det ret dårligt til en rigtig test. Mens jeg ventede på maven shell og håbede at dette kunne hjælpe andre, kom jeg endelig ud til denne repo mvnexec

Klon det, og symlink scriptet et sted på din vej. Jeg bruger ~/bin/mvnexec , da jeg har ~/bin på min vej. Jeg tror mvnexec er et godt navn for scriptet, men det er op til dig at ændre symbollinket...

Start det fra roden af ​​dit projekt, hvor du kan se src og target dirs.

Scriptet søger efter klasser med hovedmetoden og tilbyder et valg at vælge en (eksempel med maveniseret JMeld-projekt)

$ mvnexec 
 1) org.jmeld.ui.JMeldComponent
 2) org.jmeld.ui.text.FileDocument
 3) org.jmeld.JMeld
 4) org.jmeld.util.UIDefaultsPrint
 5) org.jmeld.util.PrintProperties
 6) org.jmeld.util.file.DirectoryDiff
 7) org.jmeld.util.file.VersionControlDiff
 8) org.jmeld.vc.svn.InfoCmd
 9) org.jmeld.vc.svn.DiffCmd
10) org.jmeld.vc.svn.BlameCmd
11) org.jmeld.vc.svn.LogCmd
12) org.jmeld.vc.svn.CatCmd
13) org.jmeld.vc.svn.StatusCmd
14) org.jmeld.vc.git.StatusCmd
15) org.jmeld.vc.hg.StatusCmd
16) org.jmeld.vc.bzr.StatusCmd
17) org.jmeld.Main
18) org.apache.commons.jrcs.tools.JDiff
#? 

Hvis et er valgt (indtastning af nummer), bliver du bedt om argumenter (du kan undgå med mvnexec -P )

Som standard kompilerer det projekt hver kørsel. men du kan undgå det ved at bruge mvnexec -B

Det tillader kun at søge i testklasser -M eller --no-main , eller kun i hovedklasserne -T eller --no-test . har også et filter efter navn mulighed -f <whatever>

Håber dette kunne spare dig lidt tid, for mig gør det det.


Java tag