2014-05-23 15 views
18

Kontekst: Chcę, aby skompilować i testy Wszystkie moduły w projekcie wielomodułowego ale jeśli nie albo kompilację lub testy Chcę ogólnej kompilacji , aby zawiodła.Jak skompilować wszystkie moduły Maven nawet jeśli test się nie powiódł, ale nie całkowita budować czy jakieś testy nie

domyślne konfiguracje albo zatrzymać się na pierwszym niepowodzeniu lub pominąć moduły po awarii testowym

Bieg:

mvn czystej instalacji

zatrzymuje się na pierwszym module niepowodzeniem.

Jeśli dodać:

mvn czystej instalacji -fae // nie na końcu

potem wszystkie moduły są prowadzone, ale nie wtedy, gdy testy wszelkie moduły zależne są skpped:



    [INFO] ------------------------------------------------------------------------ 
    [INFO] Reactor Summary: 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Module A ............................................. SUCCESS [15.210s] 
    [INFO] Module B ............................................. SUCCESS [10.923s] 
    [INFO] Module C ............................................. FAILED [1.731s] 
    [INFO] Module D ............................................. SUCCESS [3.791s] 
    [INFO] Module E ............................................. SUCCESS [1.488s] 
    [INFO] Module F ............................................. SKIPPED (dependency build failed or was skipped) 
    [INFO] Module G ............................................. SKIPPED (dependency build failed or was skipped) 
    [INFO] Module H ............................................. SKIPPED (dependency build failed or was skipped) 
    [INFO] Module I ............................................. SUCCESS [1.690s] 
    [INFO] ----------------------------------------- 

Inną opcją wymuszania kompilacji wszystkich modułów jest:

mvn czystej instalacji -fn // nigdy nie

ale wynika to w budowie przechodzącej gdy testy nie



    [INFO] ------------------------------------------------------------------------ 
    [INFO] Reactor Summary: 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Module A ............................................. SUCCESS [15.210s] 
    [INFO] Module B ............................................. SUCCESS [10.923s] 
    [INFO] Module C ............................................. FAILED [1.731s] 
    [INFO] Module D ............................................. SUCCESS [3.791s] 
    [INFO] Module E ............................................. SUCCESS [1.488s] 
    [INFO] Module F ............................................. SUCCESS [9.062s] 
    [INFO] Module G ............................................. SUCCESS [16.324s] 
    [INFO] Module H ............................................. SUCCESS [4.032s] 
    [INFO] Module I ............................................. SUCCESS [1.690s] 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Error for project: Module C (during install) 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] There are test failures. 

    Please refer to C:\MavenBuildDir\ModuleC\surefire-reports for the 
    individual test results. 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] For more information, run Maven with the -e switch 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] + Ignoring failures 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] BUILD SUCCESSFUL 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Total time: 30 minutes 38 seconds 
    [INFO] Finished at: Fri May 23 16:42:08 BST 2014 
    [INFO] Final Memory: 39M/185M 

Może ktoś doradzić zestaw opcji do osiągnięcia następujących celów:

  1. skompiluj wszystkie moduły
  2. wykonaj testy wszystkich modułów
  3. Jeśli testy modułu za nie ale kod kompiluje moduły zależne wciąż opracowywane i testowane

Odpowiedzi mile widziane - w przeciwnym razie mamy do uruchomienia testów wielokrotnie na serwerze kompilacji, jeśli istnieje wiele problemów - spalanie dużo czasu .

+0

Jakieś aktualizacje? Jak rozwiązałeś problem? – papacito

+0

Dziękuję za to pytanie! To jedyne miejsce, w którym mogę znaleźć, że faktycznie pokazuje, gdzie/jak '' fa' wpływa na kompilację! Żadna z dokumentacji nie odnosi się do tego, czy '-fae' wpływa na kompilację błędów. –

Odpowiedz

3

Proponuję używać:

mvn -Dmaven.test.failure.ignore=true --fail-at-end clean install 
+0

Dziękuję za odpowiedź - dam ci szansę. Przyjmę, gdy przetestuję te ustawienia. – Alex

+1

Próbowałem tego, ale niestety nadal pomija moduły. Opcją może być mvn clean install -fn // fail nigdy nie następuje po instalacji mvn clean, więc kompilacja nie powiedzie się. ale nieprzyjemny, jak wymaga kolejnego biegu. Na razie pozostawiam pytanie bez odpowiedzi i mogę to opublikować z Sonatype. – Alex

+0

To wydaje się robić to samo, co z '--fail-never'? –

4

Proponuję podzielić ją na dwie mvn połączeń:

mvn clean compile 
mvn -fae install 

Pierwsze połączenie nie powiedzie się, jeśli istnieją błędy kompilacji. Drugie wywołanie będzie ponownie używać skompilowanych plików .class, ponieważ "czysty" jest pominięty. Na końcu zakończy się niepowodzeniem, jeśli wystąpią błędy testowe. Ale kompilacja została już zakończona dla WSZYSTKICH modułów.

+0

Dzięki za odpowiedź. Sugestia khmarbaise pozwala uniknąć podwójnej kompilacji. Spodziewam się, że pierwsze wywołanie zakończy się niepowodzeniem przy pierwszym błędzie, a drugie pominie kolejne błędy. Jednak domniemana efektywność kompilacji oznacza, że ​​wolę tę odpowiedź, jeśli działa. – Alex

+1

To rozwiązanie będzie nadal pomijało moduły zależne, gdy testy zakończą się niepowodzeniem - co jest celem pytania - więc to nie zadziała. Rozważałem wykonanie mvn clean install -fae -Dmaven.test.skip = true, aby zbudować wszystkie moduły bez testów, następnie test mvn -fae, aby uruchomić wszystkie testy. Ale nie lubię dwóch połączeń z mavenami. – Alex

Powiązane problemy