Uruchom główną klasę projektu Maven [duplikat]

To pytanie ma już odpowiedź tutaj:

Stworzyłem prostą konsolową aplikację Java, która jest zbudowana z Maven. Czy istnieje sposób, aby główna klasa (która nie wymaga żadnych argumentów) mogła być uruchomiona z linii poleceń przy użyciu polecenia maven:

mvn run-app com.example.MainClass
Author: Matthew Farwell, 2012-03-24

2 answers

Spróbuj maven-exec-plugin . Stamtąd:

mvn exec:java -Dexec.mainClass="com.example.Main"
To poprowadzi Twoją klasę w JVM. Możesz użyć -Dexec.args="arg0 arg1" do przekazania argumentów.

Jeśli korzystasz z systemu Windows, zastosuj cudzysłowy dla exec.mainClass i exec.args:

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

Jeśli robisz to regularnie, możesz dodać parametry do pom.również 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>
 448
Author: Matthew Farwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 18:35:43

Chociaż maven exec robi tu sztuczkę, uważam, że jest dość kiepski jak na prawdziwy test. Czekając na Maven shell i mając nadzieję, że to może pomóc innym, w końcu wyszedłem do tego repo mvnexec

Sklonuj go i połącz symbolicznie skrypt gdzieś w twojej ścieżce. Używam ~/bin/mvnexec, tak jak mam ~/bin na swojej drodze. Myślę, że mvnexec{[20] } jest dobrą nazwą dla skryptu, ale to do ciebie należy Zmiana dowiązania symbolicznego...

Uruchom go z katalogu głównego projektu, gdzie można zobaczyć src i cel dirs.

Skrypt wyszukujący klasy z główną metodą, oferujący select do wyboru (przykład z mavenized jmeld project)

$ 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
#? 

Jeśli jeden z nich jest wybrany( wpisując numer), zostaniesz poproszony o podanie argumentów (możesz uniknąć za pomocą mvnexec -P)

Domyślnie kompiluje projekt przy każdym uruchomieniu. ale możesz tego uniknąć używając mvnexec -B

Umożliwia wyszukiwanie tylko w klasach testowych -M lub --no-main, lub tylko w klasach głównych -T lub --no-test. posiada również opcję filtrowania według nazwy -f <whatever>

Mam nadzieję, że zaoszczędzisz trochę czasu.
 13
Author: albfan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-16 08:36:57