Стоит отметить, что я использую maven в качестве инструмента управления сборкой. У меня есть банка (назовем его dep.jar
), который будет включен в окончательный проект (final.jar
) в качестве зависимости. dep.jar
имеет класс с методом main. Мне нужно иметь несколько точек входа (классов с основными методами) в каталоге верхнего уровня моего final.jar
, чтобы я мог использовать точку входа в зависимости от моих потребностей. Включая один из dep.jar
.
Я рассмотрел:
- Изменение файла
META-INF/MANIFEST.MF
в банке. Как указано Oracle, невозможно ссылаться на основные классы внутри зависимостей jar (каталог BOOT-INF/lib
) -> https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html; - Uber jar - не вариант, я зависим внутри структуры каталогов jar Java кодовая база
- Использование специального загрузчика классов, подобного этому http://www.jdotsoft.com/JarClassLoader.php. Но это подразумевает изменение основного метода
final.jar
, который я не могу сделать из-за ограничений проекта. - Использование
maven-dependency-plugin
, но он может распаковать внутренний jar (dep.jar
) и скопировать классы в рабочий каталог maven target
которые на этапе упаковки будут упакованы в каталог BOOT-INF/classes
. Опять же, я не могу ссылаться на основные классы оттуда. Если я распакую и скопирую их куда-то, отличное от target
- скопированные классы не появятся в моем final.jar
Есть ли какой-либо другой плагин или опция, как добавить классы из final.jar
зависимых jar dep.jar
во время сборки JAR до верхнего уровня final.jar
?
РЕДАКТИРОВАТЬ: final.jar
проект выглядит следующим образом:
final.jar
|_______BOOT-INF
|_______lib
| |_______dep.jar (contains main class I want to invoke)
|_______classes
|__________dir (directory I want to copy on demand with help of CLI)