lancer la classe principale du projet Maven [dupliquer]
cette question a déjà une réponse ici:
- Projet Maven Run 6 réponses
j'ai créé une application Java simple console qui est construite avec Maven. Y a-t-il un moyen pour que la classe principale (qui ne nécessite aucun argument) puisse être exécutée à partir de la ligne de commande en utilisant un maven commande comme:
mvn run-app com.example.MainClass
2 réponses
Essayez le maven-exec-plugin . De là:
mvn exec:java -Dexec.mainClass="com.example.Main"
ce sera votre classe dans le JVM. Vous pouvez utiliser -Dexec.args="arg0 arg1"
pour passer des arguments.
si vous êtes sur Windows, appliquez des guillemets pour
exec.mainClass
etexec.args
:mvn exec:java -D"exec.mainClass"="com.example.Main"
Si vous faites cela régulièrement, vous pouvez ajouter les paramètres dans le pom.xml ainsi:
<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>
bien que maven exec fasse le tour ici, je l'ai trouvé assez pauvre pour un vrai test. En attendant Maven shell , et en espérant que cela pourrait aider les autres, je suis finalement sorti à ce rapport mvnexec
le cloner, et symlink le script quelque part dans votre chemin. J'utilise ~/bin/mvnexec
, comme j'ai ~/bin
sur mon chemin. Je pense que mvnexec est un bon nom pour le script, mais c'est à vous de changer le lien...
le lancer à partir de la racine de votre projet, où vous pouvez voir src et dirs cible.
la recherche de script pour les classes avec la méthode principale, offrant un select pour choisir un (exemple avec mavenized JMeld projet)
$ 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
#?
si l'un est sélectionné (en tapant le numéro), vous êtes invité pour les arguments (vous pouvez éviter avec mvnexec -P
)
par défaut, il compile le projet à chaque exécution. mais vous pouvez éviter cela en utilisant mvnexec -B
permet de rechercher uniquement dans les classes d'essai -M
ou --no-main
, ou seulement dans les classes principales -T
ou --no-test
. dispose également d'un filtre par l'option de nom -f <whatever>
J'espère que cela pourrait vous faire gagner du temps, pour moi si.