2011-10-11 2 views
2

У меня есть проект с несколькими сторонними JAR-файлами в нескольких каталогах. В настоящее время в проекте используются некоторые трюки с муравьями, чтобы рекурсивно включать все файлы jar в путь к классам. Я хочу создать развертывание для другого сайта, который будет включать JAR-код моего собственного кода в один файл и каким-то образом включить другие JAR-файлы, которые мне нужны. Oracle claims, что подстановочные знаки в командной строке не будут рекурсивно включать банки. Я хочу, чтобы развертывание работало в Windows или Linux.Рекурсивно, включая банки в classpath

Похоже, у меня есть следующие варианты:

  1. Включать ANT с моей JAR и запустить существующий сценарий.
  2. Как-то реорганизовать банки в одну директорию, чтобы я мог использовать подстановочный знак в моем пути к классам. Надеюсь, это не сломает сторонние библиотеки.
  3. Вручную создайте большой, уродливый путь к классам.

Кто-нибудь знает более простой способ? На данный момент я склонен идти с №1.

+0

Вы можете поместить банки в один каталог и включить скрипт, который создает путь к классам. –

+0

Если у банки есть зависимость от того, где она находится, эта банка сломана - я, конечно, никогда не видел такой вещи. –

+0

@Dave Newton это особенность манифеста jar, см. Http://download.oracle.com/javase/tutorial/deployment/jar/downman.html – Matt

ответ

2

Я бы пошел с №2. Когда вы создаете дистрибутив, скопируйте все банки в каталог «lib», а затем включите их все с помощью подстановочных знаков. Я никогда не знал, чтобы третья сторона библиотеки ломалась, когда делала такое. Не должно быть много обмана с помощью ant: use copy with flatten = "true" и включать в себя набор файлов (ы), указывающий каталоги/банки для повторной обработки.

0

вариант 4: Цель состоит в том, чтобы сделать вас приложением дисковода просто с

java -jar your.jar 

Основной класс и классы устанавливаются в MANIFEST.MF из your.jar. Используйте ant для создания classpath во время сборки. Это может быть либо большое, уродливое, вложенное дерево, либо большое, уродливое сплюснутое дерево в lib.

См. here, here и here для примера.

0

Вы можете использовать JarJar и поместить все в один файл JAR. Чтобы убедиться, что вы можете переупаковать свои библиотеки, вам необходимо проверить условия лицензирования и распространения сторонних поставщиков.

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