Mam dość dużą (kilka MLOC) aplikację pod ręką, którą chciałbym podzielić na więcej możliwych do utrzymania oddzielnych części. Obecnie produkt składa się z około 40 projektów Eclipse, z których wiele ma współzależności. Samo to sprawia, że system ciągłej budowy staje się niewykonalny, ponieważ musiałby się bardzo dużo odbudować za każdym razem.Jak modularyzować (dużą) aplikację Java?
Czy istnieje „najlepsze praktyki” sposób jak
- zidentyfikować części, które mogą być natychmiast rozdzielone
- dokumentów wzajemnych zależności wizualnie
- rozwikłać przepisami kodeksu
- handle „łaty” musimy zastosować do bibliotek (obecnie obsługiwane przez umieszczenie ich w ścieżce klas przed rzeczywistą biblioteką)
Jeśli istnieją (darmowe/otwarte) narzędzia do obsługi tego, będę wdzięczny za wskazówki.
Mimo że nie mam żadnego doświadczenia z Mavenem, wydaje mi się, że to wymusza bardzo modularną konstrukcję. Zastanawiam się teraz, czy jest to coś, co można zmodernizować iteracyjnie, czy też projekt, który miał go użyć, musiałby od samego początku być rozplanowany na modularność.
Edit 2009-07-10
Jesteśmy w procesie łupania na kilka podstawowych modułów za pomocą Apache Ant/Ivy. Naprawdę pomocne i dobrze zaprojektowane narzędzie, nie nakładające na ciebie tak wiele jak maven.
spisałem kilka bardziej ogólnych szczegóły i osobista opinia o tym, dlaczego to robimy, że na moim blogu - zbyt długo, aby umieścić tu, a może nie interesująca dla każdego, więc postępować według własnego uznania: www.danielschneller.com
Jakiego systemu kompilacji używasz teraz? Jeśli jest to porównanie Ant/Maven, wydaje się bardziej religijnym wyborem niż cokolwiek innego. –
Obecnie używamy mrówki z zestawem dość skomplikowanych skryptów do generowania wszelkiego rodzaju artefaktów.Ale to nigdy nie było kwestią "religii" - to była tylko decyzja podjęta kilka lat temu bez większego porównania. W tamtych czasach rzeczy były oczywiście mniejsze. –
Chciałem tylko powiedzieć, że różnica nie jest tak duża, jak niektórzy mogą to zrobić, więc nie oczekujcie przejścia do Mavena, aby wszystko było łatwiejsze. –