a) mam duży zbiór klas tworzących "framework" dla moich aplikacji
b) ze względów praktycznych nie chce dzielić ich na osobne biblioteki -
są dość zwarte i nie jest łatwo mi wydzielić sensowne podzbiory. Ale
nawet jesli podziele problem pozostanie tylko rozdrobniony.
c) mam pare programów (main) korzystających z różnych częsci tego
frameworka.
d) w każdym wypadku istnieje jakaś część martwych klas które nie
uczestniczą w runtime konkretnego maina.
Pytanie: czy po zbudowaniu docelowego jara możliwe jest "posprzątanie" z
niego bezużyteczych plików class ? Poszukuje czegoś w rodzaju
analizatora który na podstawie manifestu będzie w stanie rekurencyjnie
oznaczyć używane pliki i usunąć zbędne w jarze. Stukam i pukam na google
i coś nie mogę znaleźć, pewnie nie znam własciwych słów kluczowych.
Zalezy mi na wersji post-build działającej na jarze a nie na źródłach.
PS. Nie korzystam z żadnych technik dynamicznego ładowania klas,
wyłącznie statyczny runtime.
> Pytanie: czy po zbudowaniu docelowego jara możliwe jest "posprzątanie" z
> niego bezużyteczych plików class ?
Spróbuj -verbose:class podczas wywołania programu, np.
$ java -verbose:class -version
Z taką listą używanych klas tworzysz nowy jar. Oczywiście może się
zdarzyć, że jakieś funkcjonalności nie wywołasz podczas testów
"uszczuplających" i wtedy NCDFE ;-)
Jacek
--
Jacek Laskowski
http://www.JacekLaskowski.pl
--
Pozdrawiam,
Artur
> Pytanie: czy po zbudowaniu docelowego jara możliwe jest "posprzątanie" z
> niego bezużyteczych plików class ? Poszukuje czegoś w rodzaju
> analizatora który na podstawie manifestu będzie w stanie rekurencyjnie
> oznaczyć używane pliki i usunąć zbędne w jarze. Stukam i pukam na google
> i coś nie mogę znaleźć, pewnie nie znam własciwych słów kluczowych.
> Zalezy mi na wersji post-build działającej na jarze a nie na źródłach.
Zobacz też na GenJar:
http://genjar.sourceforge.net/
http://mindprod.com/jgloss/genjar.html
Nigdy nie użyłem, więc gdyby nie działało jak należy, możesz wyciągnąć
te zależności samemu, trzeba tylko nieco w class-file'ach pogrzebać... :)
piotr
Dokładnie. Statyczna analiza plików .class w przypadku ogólnym nie
pozwala na ustalenie które klasy są używane a które nie. Dopiero
rzeczywiste uruchomienie systemu może w tym pomóc.
Z pomysłów: możnaby zapisywać listę używanych klas do pliku i napisać
jakiś task dla ant-a który będzie czytał listę + jakieś dodatkowe reguły
i kopiował pliki do katalogu przejściowego z którego później zostanie
utworzony jar.
Pozdrawiam,
Leonard
--
duc, sequere, aut de via decede