Основной класс внутри внутренней банки

Я пытаюсь создать установщик для нескольких проектов Java Maven (используя Eclipse). Я хотел бы использовать сборку maven для создания файла jar (отныне большой жирный файл jar), который содержит все установочные файлы (JARs + docs + другие), а также установочный JAR (результат построения проекта установщика). Я хочу, чтобы установщик распаковал большую толстую флягу, и поэтому я хочу, чтобы основной класс был включен в флягу инсталлятора. Пользователь получит банку с большой жирностью, и я хочу, чтобы java -jar big-fat.jar выполнял основную часть внутри installer.jar. Напомним, вот структура банки с большим количеством жира:

большой жир банка:
--installer.jar
--application.jar
--readme.doc,
--META-INF:
---- MANIFEST.MF

где installer.jar - это Java-программа, которая распаковывает big-fat-jar и содержит main, application.jar - устанавливаемое приложение (может быть несколько jar или wars вместо одного application.jar), а readme.doc обозначает любой Docs. Мой вопрос: что мне делать, чтобы вызвать основной внутри installer.jar, когда пользователь выполняет java -jar big-fat-jar? В других статьях я читал, что OneJar может быть полезен, но я не уверен, как указать, что main находится во внутренней банке.

1 ответ

Я никогда не пробовал это с банкой внутри другой банки, как вы описали, но я думаю, что это может сработать, если вы укажете это в своем Manifest.txt файл. Вы можете сделать это так:

Manifest-Version: 1.0
Created-By: Stackru
Main-Class: installer.MyClass 

В приведенном выше примере MyClass файл будет иметь main метод, который будет вызываться при запуске java -jar <jarname.jar>

Пожалуйста, смотрите верхнюю часть этой страницы для получения дополнительной информации: https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

Глава First Java от Sierra и Bates также расскажет, как сделать это с помощью класса, но не Java-фляги внутри другого Java-фляги.

Надеюсь, это поможет.

Спасибо за чтение этого.

Другие вопросы по тегам