151 votes

Comment exécuter un programme avec Maven?

Je voudrais avoir un Maven but de déclencher l'exécution d'une classe java. Je suis en train de migrer sur un Makefile avec les lignes:

neotest:
    mvn exec:java -Dexec.mainClass="org.dhappy.test.NeoTraverse"

Et je voudrais mvn neotest pour produire ce qu' make neotest ne le sont actuellement.

Ni le plugin exec documentation , ni le Maven Ant tâches pages avait toute sorte de simple exemple.

Actuellement, je suis à:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

Je ne sais pas comment déclencher le plug-in à partir de la ligne de commande.

190voto

Pascal Thivent Points 295221

Avec la configuration globale que vous avez défini pour l'exec-maven-plugin:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

invoquant mvn exec:java sur la ligne de commande appeler le plugin qui est configuré pour exécuter la classe org.dhappy.test.NeoTraverse.

Donc, pour déclencher le plug-in à partir de la ligne de commande, exécutez simplement:

mvn exec:java

Maintenant, si vous voulez exécuter l' exec:java objectif dans le cadre de votre version standard, vous aurez besoin de lier l'objectif à une phase du cycle de vie par défaut. Pour ce faire, déclarer l' phase à laquelle vous souhaitez lier le but dans l' execution élément:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions>
    <execution>
      <id>my-execution</id>
      <phase>package</phase>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

Avec cet exemple, votre classe sera exécutée au cours de l' package de phase. C'est juste un exemple, à adapter en fonction de vos besoins.

29voto

Will Points 629

Afin d'exécuter plusieurs programmes, j'avais également besoin d'une section profiles :

 <profiles><profile>
  <id>traverse</id>
  <activation><property><name>traverse</name></property></activation>
  <build><plugins><plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <configuration>
      <executable>java</executable>
      <arguments>
        <argument>-classpath</argument><classpath />
        <argument>org.dhappy.test.NeoTraverse</argument>
      </arguments>
    </configuration>
  </plugin></plugins></build>
</profile></profiles>
 

Ceci est alors exécutable en tant que:

 mvn exec:exec -Dtraverse
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X