2017-11-26 3 views
2

Ich habe ein Projekt mit einem übergeordneten Verzeichnis der folgenden in seiner pom.xml enthält:Maven ausfallsicher läuft nicht Tests in Submodul

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.20.1</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>integration-test</goal> 
     <goal>verify</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

und

<modules> 
    <module>submodule</module> 
</modules> 

Das Submodul Unterverzeichnis enthält wieder eine pom.xml mit einem Verweis auf sein Elternartefakt. Das Unterverzeichnis enthält auch eine Reihe von Integrationstests, die gut funktionieren, wenn ich das fehlersichere Plugin in das pom.xml des Submoduls verschiebe und dann mvn verify aus dem übergeordneten Verzeichnis aufruft, aber dies funktioniert nicht mit diesem aktuellen (bevorzugten) Setup (Es gibt keine Fehler, die Tests werden einfach nicht ausgeführt).

Ich habe versucht, das Submodulartefakt zu dependenciesToScan in der Konfiguration des Failsafe-Plugins hinzuzufügen, aber das hat das Problem nicht gelöst. Muss ich das Submodul als eine Abhängigkeit im Eltern pom.xml hinzufügen? Denn das führt bei der Verarbeitung des pom.xml zu einem Fehler "Abhängigkeit referenziert sich selbst".

Hilfe wäre willkommen.

EDIT: Ich habe es herausgefunden, jemand anderes an dem Projekt arbeiten hatte der build Abschnitt in einem profile Abschnitt gewickelt, ich habe nicht diesen zunächst erkennen, weil die ganze Datei ziemlich groß ist und unhandlich, und ich hatte die entsprechend übersehen git commit. Indem ich diese Änderung rückgängig machte und den Anweisungen in dem von Gerald Broser geposteten Link folgte, gelang es mir, mein Problem zu lösen (ich nehme an, das Ausführen des entsprechenden Profils hätte es auch getan, aber diese Änderung war sowieso nicht nötig).

+0

Wo haben Sie dieses Plugin definiert, in der 'pluginManagement' Sektion oder direkt in der' build' Sektion? –

+0

In der 'pluginManagement'-Sektion im Eltern-Pom und im' plugins'-Bereich im Child-Pom nach dem Link von Gerold Broser. – Peter

+0

Von "_a pom.xml mit einem Verweis auf seine Elternartefakt_" beziehen Sie sich auf einen '' Abschnitt, nicht auf einen '' Abschnitt, Recht? Bitte geben Sie die relevanten Teile aller Ihrer POMs ab der zweiten Ebene (erste Ebene ist "") nach unten an. –

Antwort

1

Maven Failsafe Plugin/Usage/Usage in multi-module projects Siehe:

Wenn Sie eine gemeinsame Definition der Failsafe-Plugin in einer übergeordneten pom definieren, ist es am beste Praxis als eine Ausführungs-ID in definieren Um zu ermöglichen, dass untergeordnete Projekte die Konfiguration überschreiben.

+0

Sie haben recht, dieser Link sagt eindeutig, wie man das einrichtet, aber selbst nach der Anpassung meiner Poms werden die Integrationstests nie ausgeführt. – Peter

0

Versuch nennen

mvn clean verify -P <module> 
+0

Dies führt nur zu einer Warnung: 'Das angeforderte Profil" Submodul "konnte nicht aktiviert werden, da es nicht existiert. – Peter

+1

Die Option' -P 'gibt an, welches Profil mit dem Build ausgeführt werden soll, nicht welches Modul ausgeführt werden soll. –