2011-12-17 13 views
12

Jestem zainteresowany, jak rozpowszechniać aplikację Java, która ma wiele zależności (określonych w pom.xml w Maven).Tworzenie aplikacji Java, która pobiera własne zależności

Oczywiście można byłoby po prostu spakować wszystko w jednym dużym pliku .jar. Wydaje się to jednak marnotrawstwem, ponieważ aktualizacja aplikacji wymagałaby również wysłania nowej kopii wszystkich zależności.

Więc szukam sposób dystrybucji aplikacji, które wykonuje następujące czynności:

  • Tylko zawiera aplikację rdzenia w głównym pliku .jar
  • pobrania zależności ile potrzeba, gdy plik .jar prowadzony jest
  • Zachowuje kopie zależności lokalnie, dzięki czemu w przypadku aktualizacji aplikacji jest rozprowadzany zależności nie muszą być pobierane ponownie

Jaki jest najlepszy wa y osiągnięcia tego?

+0

Zanim ktoś to zasugeruje, wydaje się, że OSGi to przesada, ale uważam, że ma to ładne funkcje pobierania i aktualizowania pakietów w locie, nawet bez ponownego uruchamiania. –

+0

To nie pomaga teraz, ale pomyślałem, że wspomnę o trwających pracach nad rozwiązaniem tego problemu na poziomie samego JDK. Nazywa się Project Jigsaw i obecnie ma zostać uwzględnione w JDK 8. Przeczytaj więcej na ten temat tutaj: http://openjdk.java.net/projects/jigsaw/ – ivantod

+0

@ivantod: Trzy lata później. JDK 8 jest wyłączony. Nie ma jeszcze wyrzynarki. Wciąż jednak jest na mapie drogowej. – Thilo

Odpowiedz

2

możesz rozpowszechniać swój plik za pomocą web start technology (również rozpowszechniać plik jnlp). Wierzę, że to zajmie się większością funkcji dla ciebie, włączając w to możliwość aktualizacji.

+0

Zobacz także [Java Web Start] (http: // stackoverflow .com/tags/java-web-start/info) tag info, który zawiera powyższy link i jeszcze 8, a także "zorientowany programistycznie" opis JWS. –

3

Czy możesz po prostu użyć Mavena, z czymś podobnym do opisanego pod adresem Maven Run Project?

W ten sposób mam kilka własnych aplikacji instalowanych w mojej własnej sieci. Nigdy nie musiałem się martwić o mieszanie się ze ścieżkami klasy lub pobieranie/dostarczanie zależności dla programów takich jak ta od dłuższego czasu. Takie podejście spełnia także wszystkie twoje kryteria.

+0

tak, i być może opakowanie maven, dzięki czemu użytkownicy nie będą musieli sobie z tym radzić, pchanie aktualizacji zmieni się tylko kilka poms, a maven zajmie się resztą – milan