Как создать распространяемый jar с Ant для проекта java, имеющего внешние зависимости jar - PullRequest
2 голосов
/ 26 ноября 2011

У меня есть проект Java в Eclipse с классом MainClass, имеющий основной метод в пакете:

com.nik.mypackage. 

Проект также ссылается на две внешние библиотеки, которые я скопировал в папку lib в Eclipse, а затем добавил в путь сборки с помощью функции ADD JAR. Библиотеки one.jar и two.jar

Эта библиотека находится в папке lib в Eclipse и добавлена ​​в путь сборки.

Я хочу создать исполняемый файл JAR приложения, используя скрипт ant. Чтобы этот пользователь мог получить доступ к моему приложению с помощью команды:

c:>java -jar MyProject-20111126.jar

Я знаю о плагине Eclipse, который напрямую экспортирует Java-приложение как работоспособное JAR. Но я хочу изучить муравей и процесс сборки, поэтому вручную хочу создать build.xm.

Ответы [ 3 ]

5 голосов
/ 26 ноября 2011

У вас есть два варианта из вашего build.xml.Вы можете разархивировать библиотеки jar, а затем связать их содержимое с кодом, скомпилированным для вашего приложения.Или вы можете поместить библиотечные jar-файлы в файловую систему и предоставить запись ClassPath в файле манифеста файла MyProject-2011126.jar.

Если вы установили classpath в манифесте, помните, что указанный вами путьотносительно MyProject-2011126.jar.

1 голос
/ 26 ноября 2011

один вариант:

Вместо того, чтобы иметь только jar, вы создаете несколько jar (ваши jar + libs) + пакетный файл.

Итак, ваш собранный пакет может быть похож на эту структуру:

  -/package/bin/app.bat
   /package/lib/my.jar
   /package/lib/one.jar
   /package/lib/two.jar

В app.bat у вас есть то же самое, что и ваш код

java -jar MyProject-20111126.jar

PS: если вы хотите начать изучать встроенные инструменты, ANT может быть немного устаревшим инструментом.Я предлагаю http://maven.apache.org/

0 голосов
/ 27 ноября 2011

Пожалуйста, попробуйте одна банка .Он помогает перераспределить все, что упаковано в одну банку, и поставляется с ant-task .См. Самый простой способ объединить релиз в один файл JAR .

...