2012-02-16 10 views
12

Mam zamiar zoptymalizować czas budowy naszych projektów. Jedną z najbardziej czasochłonnych rzeczy jest kompilacja projektów.Jakie podejście do ulepszania przyrostowego budowania projektów masztowych preferujesz?

Ze względu na znany problem z Maven mowa w szczególności o: Maven incremental building musimy użyć mvn czystej przed każdym procesie budowlanym.

ja badali to pytanie i okazało się dwa podejścia:

  1. Incremental-build-plugin Maven Mojo
  2. Maven 2 Reactor Plugin

Ja testowałem Incremental-build-plugin Maven Mojo i wygląda całkiem dobrze. Jak widzę Maven 2 Reactor Plugin implementuje prawie tę samą funkcjonalność, ale specjalne polecenie powinno być określone, aby osiągnąć wyniki (mvn reaktor: na przykład).

Tak więc doszedłem do wniosku, że Maven 2 Reactor Plugin jest wygodniejszy tylko dla programistów, jeśli zamierzają zoptymalizować czas budynków na ich lokalnych komputerach. Ale mam pewne wahania, ponieważ Maven 2 Reactor Plugin jest hostowany i (jak myślę) jest obsługiwany jako oficjalna wtyczka maven, ale Incremental-build-plugin Maven Mojo jest hostowany na java.net.

I moje pytania:

  1. Czy moje wnioski, że te dwie wtyczki rozwiązać prawie ten sam problem, prawda?
  2. Czy ktoś ma jakiekolwiek doświadczenie w korzystaniu z obu tych wtyczek i może podać informacje o nich?
  3. Czy masz inne pomysły na optymalizację budynku?
+0

Moje pytanie brzmi: jak długo trwa kompilacja zajmie? Jak długo trwa test? Jaka jest relacja tego? – khmarbaise

Odpowiedz

-1

Czy próbowałeś używać Jenkinsa (lub Hudsona)? Jest całkiem niezły i zarządza wieloma małymi, zależnymi projektami. Jest także bardzo łatwy do skonfigurowania na serwerze. Zaleciłbym przynajmniej spróbować. Aby skonfigurować serwer i skonfigurować 20 projektów maven, zajmuje to tylko kilka minut.

Rzeczą, która mi się podoba, jest to, że będzie monitorować kontrolę nad źródłami i wykonywać kompilację co X minut, a następnie automatycznie będzie budować projekty w górę.

+0

Hudson/Jenkins nie optymalizuje kompilacji (co jest pytaniem OP). Ponadto użycie H/J nie pomoże w lokalnej kompilacji, gdy kompilacja trwa wiecznie – Attila

0

Wtyczka reaktora jest bardziej przydatna do budowania tylko podzbioru modułów w obrębie kompilacji, przy czym wtyczka przyrostowa ma na celu jedynie budowanie modułów, które uległy zmianie od czasu ostatniej kompilacji.

Podczas gdy widzę, że używasz tego samego efektu, prawdopodobnie bardziej interesuje Cię wtyczka przyrostowej kompilacji z tego, co powiedziałeś. Niezależnie od tego, czy możesz użyć tych dwóch elementów, aby upewnić się, że budujesz tylko te moduły/zależności, których potrzebujesz, jeśli mają nieskompilowane zmiany, których nie znam.

PS - Myślę, że czysty błąd został naprawiony w najnowszej wersji wtyczki przyrostowej.

3

Obie powyższe wtyczki nie przyspieszą czasu kompilacji dla Twojego zastosowania. jeśli chcesz przyspieszyć swój czas kompilacji, proponuję zaktualizować do maven 3 z równoległą obsługą kompilacji.

Jednak to, co się robi z powyższymi wtyczkami, można również uzyskać po wyjęciu z pudełka z maven3, z wyjątkiem funkcji związanych z svn wtyczki reaktora. do tego potrzebowałbyś jenkinsa, o czym wspomniałem w poprzednim poście.

użyteczne Maven 3 funkcje, aby przyspieszyć swój build:

mvn clean compile -T 3 (using three threads for paralell builds) 

mvn -amd -pl groupid:arifactId (builds the specified projects and all dependent artifacs) 
Powiązane problemy