2013-02-22 3 views
3

Меня немного беспокоит наш текущий процесс сборки. Он пахнет «неправильным способом» и заставляет наших клиентов много дополнительных загрузок.Подписание Java Webstart (Library)

У нас есть обычный Java-проект, который мы публикуем через Webstart. Он использует множество библиотек, которые мы поставляем в виде .jar-файлов. Наш JNLP выглядит так:

<resources> 
    <!-- Application Resources --> 
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" max-heap-size="512m" java-vm-args="-Xincgc" /> 
    <jar href="OurApp.jar" main="true" /> 
    <jar href="nimrodlf-1.2.jar" main="false" /> 
    <jar href="jackson-core-asl-1.9.10.jar" main="false" /> 
    <jar href="jackson-jaxrs-1.9.10.jar" main="false" /> 
    <!-- ... --> 

Пока все хорошо. Теперь есть проблема с использованием ящиков, подписанных разными сертификатами, я думаю, или, может быть, это только если у вас есть собственный сертификат. В любом случае найденное решение состояло в том, что все банки должны быть подписаны одним и тем же сертификатом.

Впоследствии, мы копируем все наши банки, наши собственные, а также библиотеки, в папку Webstart и подписать их, как так с Ant:

<target name="sign_jar" depends="check_publish"> 
    <signjar keystore="ourapp.keystore" alias="jenkins" storepass="private" verbose="true"> 
     <path> 
      <fileset dir="${publish.folder}/" includes="**/*.jar" /> 
     </path> 
    </signjar> 
</target> 

Это все работает отлично, хотя это занимает много времени, подписывая каждую банку. Но это также заставляет каждого клиента повторно загружать каждый баннер библиотеки каждый раз, когда мы публикуем изменения в нашем собственном банке приложений (что очень много). Библиотеки технически не меняются, но отставка делает их новыми.

Мы делаем это правильно? Есть ли способ лучше ? Можем ли мы каким-то образом изменить наш процесс сборки, чтобы сделать так, чтобы люди могли кэшировать библиотечные банки?

+0

Спасибо, я добавил это как тег. На самом деле, у нас нет никого, кто специализировался в процессах сборки, так что все это немного расплывчато в нашем понимании;) – Torque

+0

Комментарий обновлен для ответа. :) –

ответ

2

Смотреть signjar task - lazy attribute ..

флаг для управления, означает ли наличие подписи файла баночку подписан. Это используется, только если целевой JAR соответствует источнику JAR

Смежные вопросы