web-dev-qa-db-fra.com

Comment exécuter un programme avec Maven?

J'aimerais qu'un objectif Maven déclenche l'exécution d'une classe Java. J'essaie de migrer sur un Makefile avec les lignes suivantes:

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

Et je voudrais mvn neotest pour produire quoi make neotest fait actuellement.

Ni les pages documentation du plugin exec , ni les pages tâches Maven Ant ne contenaient un exemple simple.

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 plugin à partir de la ligne de commande, cependant.

110
Will

Avec la configuration globale que vous avez définie pour le plugin exec-maven:

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

invoquer mvn exec:Java sur la ligne de commande appelle le plug-in configuré pour exécuter la classe org.dhappy.test.NeoTraverse.

Donc, pour déclencher le plugin à partir de la ligne de commande, lancez simplement:

mvn exec:Java

Maintenant, si vous voulez exécuter le exec:Java objectif dans le cadre de votre construction standard, vous devez le lier à une phase particulière du cycle de vie par défaut =. Pour ce faire, déclarez le phase auquel vous voulez lier l'objectif dans l'élément execution:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4</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 serait exécutée au cours de la phase package. Ceci est juste un exemple, adaptez-le à vos besoins. Fonctionne également avec la version 1.1 du plugin.

135
Pascal Thivent

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
22
Will