wake-up-neo.com

Wie führe ich ein Programm mit Maven aus?

Ich möchte, dass ein Maven-Ziel die Ausführung einer Java Klasse auslöst. Ich versuche, über ein Makefile mit den folgenden Zeilen zu migrieren:

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

Und ich möchte mvn neotest um was zu produzieren make neotest derzeit.

Weder die Seiten exec plugin documentation noch Maven Ant tasks enthielten ein einfaches Beispiel.

Derzeit bin ich bei:

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

Ich weiß jedoch nicht, wie ich das Plugin über die Befehlszeile auslösen soll.

110
Will

Mit der globalen Konfiguration , die Sie für das exec-maven-plugin definiert haben:

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

durch Aufrufen von mvn exec:Java in der Befehlszeile wird das Plugin aufgerufen, das zum Ausführen der Klasse org.dhappy.test.NeoTraverse konfiguriert ist.

Um das Plugin über die Befehlszeile auszulösen, führen Sie einfach Folgendes aus:

mvn exec:Java

Wenn Sie nun das Ziel exec:Java Als Teil Ihres Standardbuilds ausführen möchten, müssen Sie das Ziel an eine bestimmte Phase binden des Standardlebenszyklus . Dazu deklarieren Sie im Element phase das execution, an das Sie das Ziel binden möchten:

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

In diesem Beispiel würde Ihre Klasse während der package -Phase ausgeführt. Dies ist nur ein Beispiel, passen Sie es an Ihre Bedürfnisse an. Funktioniert auch mit Plugin Version 1.1.

135
Pascal Thivent

Um mehrere Programme ausführen zu können, benötigte ich außerdem einen Abschnitt 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>

Dies ist dann ausführbar als:

mvn exec:exec -Dtraverse
22
Will