Mam tradycyjną konfigurację maven z projektem nadrzędnym i wieloma modułami, które są podprojektami. Kiedy wykonuję numer mvn deploy
, uruchamiany jest pełny cykl życia (w tym test
) do deploy
dla każdego projektu w sekwencji (pierwszy odgłos). Chciałbym uniknąć wdrażania jakichkolwiek podprojektów, jeśli któryś z projektów nie zostanie zbudowany. Innymi słowy, chciałbym, aby deploy
całego projektu nadrzędnego było "wszystko albo nic". Czy jest jakiś sposób, aby to osiągnąć?Wykonaj test nadrzędnego projektu przez wszystkie moduły przed wdrożeniem któregokolwiek z nich.
Odpowiedz
Jeśli zdalne repozytorium jest Sonatype Nexus Pro instancji, a następnie „pomostowy” obiekt Nexus Pro pozwoli na publikację atomowej do repozytorium właściwe.
Jeśli używasz Jenkins, jest opóźnione wdrożenie wtyczki, która będzie wdrażać wszystkie artefakty jako post-build (lub bardzo post-build) działanie (nie przeszkadza zbytnio którym repozytorium menedżer używasz)
Wreszcie jeden z moich średnich długoterminowych celów dla MRM-maven-plugin @ codehaus jest umożliwienie lokalnym inscenizację rozmieszczenia tak, że będziesz w stanie zrobić coś takiego
mvn mrm:catch-deploy deploy mrm:push-deploy
BUT że ostatnia nie jest jeszcze napisana!
Sam Maven nie może tego zrobić (jeszcze). Obecnie proces kompilacji uruchamia wszystkie cele dla każdego modułu z osobna. Istnieją plany, aby umożliwić docelowe, aby zobaczyć duże zdjęcie, ale to chyba dla Maven 4.
W tym czasie, można użyć trochę skrypt:
mvn clean install && mvn deploy -DskipTests=true
Pierwszy bieg buduje wszystko. Drugi bieg nie zrobi wiele (cały kod jest już skompilowany, a długie testy są pomijane), więc jest dość szybki.
Właściwie to preferuję to podejście, ponieważ mój skrypt zastępuje wszystkie istniejące elementy distributionManagement
takimi, które dotyczą pamięci podręcznej mojej firmy. Oznacza to, że mogę wdrożyć dowolny projekt dla mojej firmy bez konieczności wprowadzania zmian w oryginalnym POM. Oto scenariusz:
#!/bin/bash
if [[ ! -e pom.xml ]]; then
echo "Missing pom.xml" 1>&2
exit 1
fi
sed \
-e '/<distributionManagement>/,/<\/distributionManagement>/d' \
-e '/<\/project/d' \
pom.xml > pom-deploy.xml || exit 1
cat >> pom-deploy.xml <<EOF
<!-- ADDED BY $0 -->
<distributionManagement>
... whatever you need ...
</distributionManagement>
</project>
EOF
mvn -f pom-deploy.xml clean install && \
mvn -f pom-deploy.xml deploy -DskipTests=true && \
rm pom-deploy.xml
exit 0
- 1. Wykonaj test jednostkowy przed sprawdzeniem
- 2. moduły Odtwórz Test & FakeApplication
- 3. Python któregokolwiek z wieloma zależnościami
- 4. Schema porównuje biegi przed skryptami przed wdrożeniem podczas publikowania
- 5. Usunąć wszystkie moduły VBA z pliku Excela?
- 6. React Native: Importuj moduły spoza katalogu projektu
- 7. Zdobądź wszystkie sympatie użytkownika (wszystkie z nich) z FQL
- 8. Wykonaj skrypt php przed każdym skryptem php?
- 9. Uruchomione zadanie przed wdrożeniem: symlink: shared capistrano 3
- 10. Gdzie umieścić test jednostkowy projektu
- 11. Visual Studio 2013: "Nie wybrano żadnej wersji ramowej, należy wybrać jedną z nich przed utworzeniem projektu."
- 12. Jak korzystać z głównego pliku pom, aby sprawdzić wszystkie moduły aplikacji WWW i zbudować wszystkie moduły
- 13. Event przepuszczając przez kontrolera nadrzędnego
- 14. GRANT WYKONAJ wszystkie zapisane procedury.
- 15. gradle pull jar test z innego projektu
- 16. Jak znaleźć wszystkie moduły potomne w Pythonie?
- 17. Uruchom Junit @ Test ignoruje @ Przed/@ Po
- 18. Problemy z wdrożeniem metody propagacji sieci neuronowej
- 19. Wykonaj kod przed/po każdym działaniu kontrolera
- 20. Wykonaj polecenie tuż przed pójściem spać Mac
- 21. Wykonaj funkcję przed zmianą trasy w Backbone.js
- 22. Wykonaj wsteczną wstecz wszystkie nazwy tabeli/kolumny
- 23. Jak mogę ukryć wszystkie błędy z projektu Eclipse?
- 24. Błąd Netbeans "nie wszystkie moduły można włączyć"
- 25. Ujawnij moduły z aplikacji NPM węzła
- 26. Czy można zainstalować wszystkie brakujące moduły dla aplikacji węzła?
- 27. Jak wykonać test instanceof z Scala (Test)
- 28. jbpm pytania przed rozpoczęciem projektu
- 29. Tworzenie Merge Commit zastępowanie Ours przez nich
- 30. Usuń wszystkie linie przed meczem z sed
Zmieniam zaakceptowaną odpowiedź na tę, ponieważ myślę, że masz rację, sugerując użycie serwera CI dla tego, a nie dla maven, to jest podejście, które zamierzam podjąć. – Ramon
Stephen, do której wtyczki Jenkins odnosisz się do opóźnionego wdrożenia? –
Nie odnosząc się do żadnej konkretnej wtyczki –