Moje pliki JAR muszą być podpisane dla aplikacji webstart. Byłoby miło również je zapakować, aby zminimalizować czas pobierania. Próbuję skonfigurować zadanie Ant, aby automatycznie robił to podczas wdrażania aplikacji. Ponieważ proces paczka reorganizuje strukturę wewnętrzną jar unieważniania podpisu, Pack200 documentation zaleca proces 3 kroki:Jak wykonać zadanie Ant, aby podpisać i spakować wszystkie moje pliki JAR?
- zapakować słoik z pack200
- Wpisz się słoik z jarsigner
- Compress Jar Jar z pack200 generując .jar.pack.gz plik
Ant ma domyślne zadanie signjar, a Sun opublikował Pack200 ant task.
Problem polega na tym, że zadanie Sun pack200 działa tylko na jednym pliku naraz, a operacja ponownego pakowania musi określać plik wyjściowy.
Uważam, że powinna to być dość powszechna operacja, ale mój plik ant staje się zbyt skomplikowany i jest zbyt wiele plików tymczasowych. Czas błagać o mądrość społeczności:
Czy istnieje prosty, a przynajmniej standardowy sposób pakowania i podpisywania wszystkich moich plików JAR?
pack200 nie powiedzie się, jeśli JAR została podpisana przed operacją przepakować. W takim przypadku pojawi się komunikat o błędzie, taki jak "Wyjątek w wątku", główny "java.lang.SecurityException: Błąd trawienia SHA1 dla ..." Podstawowy błąd polega na tym, że podpisanie pakowanego słoika zwraca sukces, ale jeśli uruchomisz aplikację jarsigner - weryfikuj, zgłosi błąd. – cmcginty
Warto również dodać argument -segment-limit = -1 do docelowego ponownego pakowania, aby uniknąć błędu http://bugs.sun.com/view_bug.do?bug_id=5078608 (patrz pierwsze obejście). – foch