Я хочу создать исполняемый файл jar, используя maven-assembly-plugin , используя другой файл jar, но я наткнулся на проблему, касающуюся записи Class-Path
в манифесте.
Я определил манифест запись, как показано ниже:
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<mainClass>exe.MyMain</mainClass>
</manifest>
<manifestEntries>
<Class-Path>lib/jar_1.jar</Class-Path>
</manifestEntries>
</archive>
И мой META-INF/MANIFEST.MF
правильно сгенерирован:
Manifest-Version: 1.0
Class-Path: lib/jar_1.jar
Build-Jdk-Spec: 1.8
Created-By: Maven Archiver 3.5.0
Main-Class: exe.MyMain
Но когда я пытаюсь выполнить jar, который в основном пытается загрузить класс из jar_1.jar
, выполнение завершается неудачно.
С другой стороны, если я вручную создаю ту же банку, что и из maven-assembly-plugin , она работает должным образом.
Вот минимальный проект, воспроизводящий проблему: https://github.com/aveuiller/maven_assembly_plugin_classpath_bug_reproduction
С моей точки зрения, оба файла одинаковы, и я не могу точно определить, почему файл jar, созданный maven-assembly-plugin не удается загрузить внешнюю зависимость. Вы хоть представляете, почему это не удается?