Ich versuche, das folgende Szenario mit Maven ausführen:Prozess erzeugt durch exec-Maven-Plugin blockiert der Maven-Prozess
- Vorintegration-Phase: Anfangen basierte Anwendung Java eine Hauptklasse mit (mit exec -maven-Plugin)
- Integration-Phase: Führen Sie die Integration von Testfällen (mit maven-Fail-safe-Plugin)
- post-Integration-Phase: die Anwendung beenden anmutig (exec-maven-Plugin)
Hier ist p om.xml schnippeln:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>launch-myApp</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-DMY_APP_HOME=/usr/home/target/local</argument>
<argument>-Djava.library.path=/usr/home/other/lib</argument>
<argument>-classpath</argument>
<classpath/>
<argument>com.foo.MyApp</argument>
</arguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<forkMode>always</forkMode>
</configuration>
</plugin>
</plugins>
Wenn ich mvn post-Integration-Test ausführen, wird meine Bewerbung als Kindprozess des Maven-Prozess begonnen, aber die Anwendung Prozess blockiert den Maven Prozess die Integrationstests von der Ausführung was in der nächsten Phase kommt. Später fand ich, dass es ein bug (or missing functionality?) in maven exec-Plugin gibt, aufgrund dessen der Anwendungsprozess den Maven-Prozess blockiert. Um dieses Problem zu beheben, habe ich den Aufruf von MyApp.java in einem Shell-Skript gekapselt und dann "/ dev/null 2> " angefügt, um einen separaten Hintergrundprozess zu erzeugen. Hier ist der Schnipsel (dies ist nur ein Schnipsel und nicht die tatsächlichen eins) von runTest.sh:
java - DMY_APP_HOME =$2 com.foo.MyApp > /dev/null 2>&1 &
Obwohl dies mein Problem löst, ist es eine andere Möglichkeit, es zu tun? Fehle ich irgendein Argument für exec-maven-plugin?
Ja, Sie haben Recht. Windows wird ein Problem mit meinem Update sein. –