Самый простой способ объединить релиз в один файл JAR - PullRequest
70 голосов
/ 17 сентября 2008

Существует ли инструмент или скрипт, который легко объединяет кучу файлов JAR в один файл JAR? Бонусом было бы легко установить манифест основного файла и сделать его исполняемым.

Конкретный случай - это инструмент Java с реструктурированным текстом . Я хотел бы запустить его с чем-то вроде:

java -jar rst.jar

Насколько я могу судить, он не имеет зависимостей, которые указывают на то, что он не должен быть простым однофайловым инструментом, но загруженный ZIP-файл содержит много библиотек.

      0  11-30-07 10:01   jrst-0.8.1/
    922  11-30-07 09:53   jrst-0.8.1/jrst.bat
    898  11-30-07 09:53   jrst-0.8.1/jrst.sh
   2675  11-30-07 09:42   jrst-0.8.1/readmeEN.txt
 108821  11-30-07 09:59   jrst-0.8.1/jrst-0.8.1.jar
   2675  11-30-07 09:42   jrst-0.8.1/readme.txt
      0  11-30-07 10:01   jrst-0.8.1/lib/
  81508  11-30-07 09:49   jrst-0.8.1/lib/batik-util-1.6-1.jar
2450757  11-30-07 09:49   jrst-0.8.1/lib/icu4j-2.6.1.jar
 559366  11-30-07 09:49   jrst-0.8.1/lib/commons-collections-3.1.jar
  83613  11-30-07 09:49   jrst-0.8.1/lib/commons-io-1.3.1.jar
 207723  11-30-07 09:49   jrst-0.8.1/lib/commons-lang-2.1.jar
  52915  11-30-07 09:49   jrst-0.8.1/lib/commons-logging-1.1.jar
 260172  11-30-07 09:49   jrst-0.8.1/lib/commons-primitives-1.0.jar
 313898  11-30-07 09:49   jrst-0.8.1/lib/dom4j-1.6.1.jar
1994150  11-30-07 09:49   jrst-0.8.1/lib/fop-0.93-jdk15.jar
  55147  11-30-07 09:49   jrst-0.8.1/lib/activation-1.0.2.jar
 355030  11-30-07 09:49   jrst-0.8.1/lib/mail-1.3.3.jar
  77977  11-30-07 09:49   jrst-0.8.1/lib/servlet-api-2.3.jar
 226915  11-30-07 09:49   jrst-0.8.1/lib/jaxen-1.1.1.jar
 153253  11-30-07 09:49   jrst-0.8.1/lib/jdom-1.0.jar
  50789  11-30-07 09:49   jrst-0.8.1/lib/jewelcli-0.41.jar
 324952  11-30-07 09:49   jrst-0.8.1/lib/looks-1.2.2.jar
 121070  11-30-07 09:49   jrst-0.8.1/lib/junit-3.8.1.jar
 358085  11-30-07 09:49   jrst-0.8.1/lib/log4j-1.2.12.jar
  72150  11-30-07 09:49   jrst-0.8.1/lib/logkit-1.0.1.jar
 342897  11-30-07 09:49   jrst-0.8.1/lib/lutinwidget-0.9.jar
2160934  11-30-07 09:49   jrst-0.8.1/lib/docbook-xsl-nwalsh-1.71.1.jar
 301249  11-30-07 09:49   jrst-0.8.1/lib/xmlgraphics-commons-1.1.jar
  68610  11-30-07 09:49   jrst-0.8.1/lib/sdoc-0.5.0-beta.jar
3149655  11-30-07 09:49   jrst-0.8.1/lib/xalan-2.6.0.jar
1010675  11-30-07 09:49   jrst-0.8.1/lib/xercesImpl-2.6.2.jar
 194205  11-30-07 09:49   jrst-0.8.1/lib/xml-apis-1.3.02.jar
  78440  11-30-07 09:49   jrst-0.8.1/lib/xmlParserAPIs-2.0.2.jar
  86249  11-30-07 09:49   jrst-0.8.1/lib/xmlunit-1.1.jar
 108874  11-30-07 09:49   jrst-0.8.1/lib/xom-1.0.jar
  63966  11-30-07 09:49   jrst-0.8.1/lib/avalon-framework-4.1.3.jar
 138228  11-30-07 09:49   jrst-0.8.1/lib/batik-gui-util-1.6-1.jar
 216394  11-30-07 09:49   jrst-0.8.1/lib/l2fprod-common-0.1.jar
 121689  11-30-07 09:49   jrst-0.8.1/lib/lutinutil-0.26.jar
  76687  11-30-07 09:49   jrst-0.8.1/lib/batik-ext-1.6-1.jar
 124724  11-30-07 09:49   jrst-0.8.1/lib/xmlParserAPIs-2.6.2.jar

Как видите, желательно не делать это вручную.

До сих пор я пробовал только AutoJar и ProGuard, оба из которых довольно легко запустить. Кажется, что есть некоторая проблема с постоянным пулом в файлах JAR.

Очевидно, jrst немного сломан, поэтому я постараюсь исправить его. Файл Maven pom.xml, видимо, тоже был поврежден, поэтому мне придется это исправить, прежде чем исправлять ... Я чувствую себя как магнит: -)


Обновление: я никогда не удосужился исправить это приложение, но я проверил Eclipse «Runnable JAR export wizard», основанный на толстом JAR. Я нашел это очень простым в использовании для развертывания моего собственного кода.

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

Ответы [ 13 ]

2 голосов
/ 08 июня 2015

Я думаю, что инструмент, который вам нужен здесь, это JarSplice : http://ninjacave.com/jarsplice

Он не требует Ant или Maven, имеет собственный графический интерфейс, прост в использовании и делает именно то, что вы просили -> Объединяет содержимое нескольких файлов JAR в один (обратите внимание, что по-прежнему необходимо добавить собственный загрузчик классов).

0 голосов
/ 12 июня 2014

Для этого вы должны использовать плагин maven shading. Я часто использую maven для создания автономного файла jar, и он настолько мощный

Подробнее:

http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html

0 голосов
/ 17 сентября 2008

Похоже, Apache Ant - это то, что вы ищете.

...